我正在使用CodeIgniter的表单验证回调函数,这是它:
function _validate_rate($input, $field)
{
if ( !in_array($field, array("water", "earth", "fire")) )
{
return FALSE;
}
$min = (int) $this->input->post($field . '_max');
if ( $min > 0 AND $min < $input )
{
$this->form_validation->set_message($field . '_min', sprintf($this->lang->line('dev_s_invalid_rate'), strtolower($field)));
return FALSE;
}
return TRUE;
}
..我正在使用上述函数进行三种表单输入:
$form_rules = array(
'water_min' => array (
'field' => substr($this->lang->line('dev_field_water'), 0, -1),
'rules' => 'trim|xss_clean|max_length[4]|numeric|callback__validate_rate[water]'
),
'earth_min' => array (
'field' => substr($this->lang->line('dev_field_earth'), 0, -1),
'rules' => 'trim|xss_clean|max_length[4]|numeric|callback__validate_rate[earth]'
),
'fire_min' => array (
'field' => substr($this->lang->line('dev_field_fire'), 0, -1),
'rules' => 'trim|xss_clean|max_length[4]|numeric|callback__validate_rate[fire]'
)
);
foreach( $form_rules as $input => $data)
{
$this->form_validation->set_rules($input, $data['field'], $data['rules']);
}
当我想使用以下语句显示表单验证错误消息时,会出现问题:
$this->form_validation->set_message($field . '_min', sprintf($this->lang->line('dev_s_invalid_rate'), strtolower($field)));
(在回调函数中)。
所以:它应该设置与$field
数据相对应的错误消息,因此当$field
为water
时,它应该为water_min
设置错误消息(如这是验证规则字段名称..但是我收到以下消息:
Unable to access an error message corresponding to your field name.
。
我为三个字段创建了一个回调函数,只是为了防止重复相同的函数,这些函数必须检查/工作相同...不幸的是,无法访问与每个输入相对应的错误。
答案 0 :(得分:1)
变化
$this->form_validation->set_message($field . '_min', sprintf($this->lang->line('dev_s_invalid_rate'), strtolower($field)));
到
$this->form_validation->set_message(_validate_rate, sprintf($this->lang->line('dev_s_invalid_rate'), strtolower($field)));
错误消息对应于函数,而不是字段。这样,您的函数通常可用于多个字段。在您的错误消息中,您可以写:
'The %s field is not correct'
并将字段名称插入%s