CodeIgniter表单验证 - 将结果作为"数组"而不是"字符串"

Sab*_*bya 16 php codeigniter

我正在使用CodeIgniter编写表单验证类.有没有办法让我可以在名称值对中获取错误消息?例如,在一个样表有四个字段:user_name,password,password_conf,和timezone.其中user_namepassword验证执行以下后失败:

$result = $this->form_validation->run();
Run Code Online (Sandbox Code Playgroud)

如果上面的函数返回false,我想获取名称值对中的错误,如下所示:

Array
{
  'user_name' => 'user name is required',
  'password' => 'passord is required'
}
Run Code Online (Sandbox Code Playgroud)

我真的想形成一个JSON,我可以将其传递回AJAX调用.我有一个(脏)解决方案:我可以逐个调用验证方法,如下所示:

$this->form_validation->required($user_name);
$this->form_validation->required($password);
Run Code Online (Sandbox Code Playgroud)

还有其他方法,在名称值对中一次性获取所有错误消息吗?

编辑:我被建议用其中一个答案用jQuery进行验证:

jQuery将有助于客户端验证,但是服务器端,我正在使用CodeIgniter验证.

我设计它是为了:

  1. 我使用AJAX发布所有值.
  2. 在服务器端验证(PHP).
  3. 如果输入有效,则执行所需的操作; 否则会向用户返回错误.

Sab*_*bya 16

我通过查看CodeIgniter代码找到了一种方法:我已经扩展了库CI_Form_validation,如: -

class MY_Form_validation extends CI_Form_validation
{
    public function getErrorsArray()
    {
        return $this->_error_array;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道,这是一个黑客,但将满足我的时间需求.我希望CodeIginter团队能够很快找到一个访问该阵列的接口.

  • 这绝对是一个很好的解决方案.在codeigniter上感到羞耻,原因是没有这个功能! (4认同)
  • 这根本不是黑客攻击,这就是OOP的全部意义所在.我走在同一条路上,这是我的最终游戏,因为我没有别的选择. (2认同)

mas*_*Fly 5

您可以简单地使用,

$this->form_validation->error_array();

这是来自CodeIgniter 的类参考文档