CodeIgniter 表单验证 - 将结果获取为“数组”而不是“字符串”

2022-08-31 01:00:49

我正在使用CodeIgniter编写表单验证类。有没有办法让我在名称值对中获得错误消息?例如,在示例表单中,有四个字段:、 、 和 。其中,执行以下命令后验证失败:user_namepasswordpassword_conftimezoneuser_namepassword

$result = $this->form_validation->run();

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

Array
{
  'user_name' => 'user name is required',
  'password' => 'passord is required'
}

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

$this->form_validation->required($user_name);
$this->form_validation->required($password);

有没有其他方法可以一次获取名称值对中的所有错误消息?

编辑:有人建议我从其中一个答案中使用jQuery进行验证:

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

我设计它是为了:

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

答案 1

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

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

我知道,这是一个黑客,但会满足我当时的需求。我希望 CodeIginter 团队能尽快提出一个接口来访问该阵列。


答案 2

您可以简单地使用,

$this->form_validation->error_array();

这来自 CodeIgniter 的类参考文档


推荐