【问题标题】:CodeIgniter Validation Errors - how to get an array of key => value pairs?CodeIgniter 验证错误 - 如何获取键 => 值对数组?
【发布时间】:2012-02-19 10:33:39
【问题描述】:

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

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

如果没有本地方法可以做到这一点,我将扩展表单验证库并公开受保护的属性 *_error_array*。

【问题讨论】:

    标签: php oop codeigniter codeigniter-2


    【解决方案1】:

    我最终扩展了核心类:

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

    【讨论】:

      【解决方案2】:

      这可能为时已晚,但我想分享一个我使用的解决方案,它不涉及扩展 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);
      

      【讨论】:

        猜你喜欢
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        • 2017-12-19
        • 2016-09-06
        • 1970-01-01
        • 2021-09-10
        相关资源
        最近更新 更多