Codeigniter表单验证回调规则问题

时间:2017-02-08 21:04:52

标签: forms codeigniter validation

我在组合修剪中使用Codeigniter 3.x表单验证回调方法,并且需要验证字段。 问题是,当我管道它们时:trim | required | callback_some_method,回调方法似乎优先于trim和required,并显示其错误消息。 关于这个的任何想法?

修改 这是规则:

$this->form_validation->set_rules('new_password', 'New Password', 'trim|required|min_length[8]|callback_password_check');

这是password_check方法:

function password_check($pwd) {
    $containsLetterUC = preg_match('/[A-Z]/', $pwd);
    $containsLetterLC = preg_match('/[a-z]/', $pwd);
    $containsDigit = preg_match('/\d/', $pwd);
    $containsSpecial = preg_match('/[^a-zA-Z\d]/', $pwd);

    if ( !($containsLetterUC && $containsLetterLC && $containsDigit && $containsSpecial) ) {
        $this->form_validation->set_message('password_check', '{field} must contain UPPERCASE and lowercase letters, digits, and special characters.');
        return FALSE;
    }       

    return TRUE;
}

该方法应该返回FALSE,但只要在我的自定义规则之前需要并且该字段为空,它就应该停在那里的必填字段消息,而不是自定义方法消息。

2 个答案:

答案 0 :(得分:2)

好的,我已经设法通过扩展Form_validation库来解决它,将我的回调方法放在那里并使用其他规则(没有callback_前缀)。

答案 1 :(得分:0)

不幸的是,如CI中的代码所述,回调验证规则总是首先被验证,例如在“必需”之前。

在CI上有一个官方问题:https://github.com/bcit-ci/CodeIgniter/issues/5077