首页 文章

Codeigniter表单验证回调规则问题

提问于
浏览
0

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

EDIT: 这是规则:

$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

    好吧,伙计们,我已经设法通过扩展Form_validation库来解决它,将我的回调方法放在那里,并将其作为其他规则(没有callback_前缀) .

  • 2

    遗憾的是,如CI中的代码所述,回调验证规则始终首先在“必需”之前进行验证 .

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

相关问题