CodeIgniter验证错误-如何获取键=>值对的数组?

问题描述 投票:2回答:2

假设表单有错误,是否有办法获取键(字段名)/值(错误消息)对的数组?例如:

['name'] => 'The name field is required',
['age'] => 'The name must be greater than 18'

如果没有本机的方法,我将扩展表单验证库并公开受保护的属性* _error_array *。

php oop codeigniter codeigniter-2
2个回答
8
投票

我最终扩展了核心课程:

class MY_Form_validation extends CI_Form_validation
{
    public function error_array()
    {
        return $this->_error_array;
    }
}

0
投票

这可能有点迟了,但是我想分享一个我使用的不涉及扩展CI表单验证库的解决方案。该问题的答案已经被接受,但我希望它会使其他人受益。

[不幸的是,CodeIgniter的$this->form_validation->error_array()方法仅返回源自set_rules()方法的错误。它不考虑生成错误的表单字段的名称。但是,我们可以利用CodeIgniter的另一种方法$this->form_validation->error(),该方法通过将字段名称作为参数传递来返回与特定表单字段相关的错误。

//form validation rules
$this->form_validation->set_rules('f_name', 'First Name', 'trim|required', 
    ['required' => 'First Name is required']
);
$this->form_validation->set_rules('l_name', 'Last Name', 'trim|required', 
    ['required' => 'Last Name is required']
);
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|is_unique[users.email]', 
    [
        'required'      => 'Email is required',
        'valid_email'   => 'Email format is invalid',
        'is_unique'     => 'Email already exists'
    ]
);
$error_arr = []; //array to hold the errors
//array of form field names
$field_names= ['f_name', 'l_name', 'email'];
//Iterate through the form fields to build a field=error associative pair.
foreach ($field_names as $field) {
    $error = $this->form_validation->error($field);
    //field has error?
    if (strlen($error)) $error_arr[$field] = $error;
}

//print_r($error_arr);
© www.soinside.com 2019 - 2024. All rights reserved.