如何使用form_validation和CodeIgniter设置自定义错误消息

时间:2010-09-05 15:23:49

标签: php codeigniter

我是CodeIgniter中的新手......我正在尝试对数组输入进行表单验证... 数组名称是pages []。

我写道:

$this->form_validation->set_rules('pages[]','','required');

如果我使用它:

$this->form_validation->set_message('required', 'you not selected pages.');

它不会改变其他“必需”验证输入参数吗?

那么如何才能为一次验证设置错误信息?

2 个答案:

答案 0 :(得分:2)

它不像您所说的那样有效,您应该更仔细地阅读this section of the user guide

我不确定我能解释得更好,但是set_message方法的第一个字段并没有引用验证的类型,而是引用回调函数的名称,这是执行自定义验证工作的函数。

您需要做的是定义您的回调函数(该指南有一个很好的示例),您可以在其中遍历数组的元素并计算已检查的内容。如果在迭代结束时计数器为0,则设置错误消息。

希望这有帮助。

答案 1 :(得分:2)

这是我的自定义Form_Validation类。如果你愿意,你可以使用它。把这个文件放在你的库目录下。那么你可以像这样使用set消息:

$this->form_validation->setError(YOUR_INPUT_NAME, THE_MESSAGE);  

ex: $this->form_validation->setError('email', 'Invalid email');  

-

class MY_Form_validation extends CI_Form_validation {
    public function set_error($field, $pesan_error){
        $this->_field_data[$field]['error'] = $pesan_error;
    }
    public function get_error($field){
        return $this->_field_data[$field]["error"];
    }
    public function get_all_error(){
//        return $this->_field_data[$field]["error"];

        $fields = $this->_field_data;
        $pesan = "";
        foreach($fields as $field ) {
            if($field["error"]) {
                $pesan .= "<p>$field[error]</p>";
            }
        }
        return $pesan;
    }
}