在第一个错误codeigniter上停止表单验证

时间:2018-12-07 12:31:48

标签: php codeigniter validation

我使用的是CI 3.1.7,如果有错误,我想停止验证表单。例如:

$config = array(
    array(
            'field' => 'username',
            'label' => 'Username',
            'rules' => 'required',
            'errors' => array(
                    'required' => '%s is required',
            ),
    ),
    array(
            'field' => 'password',
            'label' => 'Password',
            'rules' => 'required',
            'errors' => array(
                    'required' => '%s is required',
            ),
    ),
    array(
            'field' => 'email',
            'label' => 'Email',
            'rules' => 'required',
            'errors' => array(
                    'required' => '%s is required',
            ),
    )
);

当用户将 username email 留空时,表格将仅显示 username是必需的。感谢您的任何帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

您无法停止validation->run(),但可以控制显示哪个错误消息。限制是您不能在相关字段旁边显示错误。或者,我应该说,我想不出一种简单的方法来在错误所属的输入旁边显示错误。

无论如何,这是提取第一条错误消息的方法。

if($this->form_validation->run() == FALSE)
{
    $errors = $this->form_validation->error_array();
    // There could be many but grab only the first
    $fields = array_keys($errors);
    $err_msg = $errors[$fields[0]];
}

如果您想要字段的名称,可以使用它。

$err_field = $fields[0];

答案 1 :(得分:0)

如果我的问题是对的..您想停止遇到的第一个表单验证错误,则必须编辑核心表单验证库,这是非常糟糕的做法,但是幸运的是,您可以扩展其功能并编辑{{ 1}}方法本身或创建自己的方法,然后复制run()代码并编辑以下代码块:

run()

现在,当发现第一个错误时它将停止执行

答案 2 :(得分:-1)

请检查

  public function __construct() 
    {
        parent::__construct();

        // load form and url helpers
        $this->load->helper(array('form', 'url'));

        // load form_validation library
        $this->load->library('form_validation');
    }

或选中https://code.tutsplus.com/tutorials/codeigniter-form-validation-from-start-to-finish--cms-28768