【发布时间】:2017-03-06 17:42:45
【问题描述】:
我正在努力让 CodeIgniter 3 使用“任何规则”的方法:
我使用下面的数组作为规则:
array(
'required',
array('memnum_unique', array($this->form_validation, 'memnum_unique'))
)
然后,我的函数定义如下:
public function memnum_unique()
{
$memno = $this->CI->input->post('membership_number');
$exists = $this->CI->votes_model->get_field_unique('membership_number', $memno, true);
if (!empty($exists))
{
$this->CI->form_validation->set_message('memnum_unique', 'The membership number has to be unique. This one has already voted.');
return false;
}
return true;
}
一般情况下,我会使用is_unique规则,但是上面的函数被裁剪掉了,包含了更多的验证条件,所以我不得不这样使用。
函数被调用 - 我可以验证。 if (!empty($exists))... 部分执行,但不知何故我仍然收到错误消息
Unable to access an error message corresponding to your field name Membership number.(Anonymous function)
表单域生成代码在我的“核心”模块中是这样设置的:
public function generate_field($id, $label, $rules, $val = '')
{
$out = array(
'id' => $id,
'validation' => array(
'field' => $id,
'label' => $label,
'rules' => $rules
),
'value' => $val
);
return $out;
}
它是这样创建的:
$data['fields']['add_member_membership_number'] = $this->core->generate_field('membership_number', 'Membership number', $this->validation_rules['add_member_membership_number']);
首先,它不是匿名函数,其次,它执行,我认为我一切都正确,为什么这不起作用?
【问题讨论】:
-
我设法通过将函数从我的表单验证类移动到本地类来使其工作。尽管这解决了眼前的问题,但这是一个糟糕的解决方案,所以仍然在寻找正确的答案,如果有人有什么我可以尝试的:-) 谢谢!
标签: php codeigniter validation