2017-02-08 67 views
0

我使用Codeigniter 3.x表單驗證回調方法進行組合修剪,並且需要驗證字段。 問題是,當我管它們:trim | required | callback_some_method時,回調方法似乎優先於trim和required,並顯示其錯誤消息。 有關於此的任何想法?Codeigniter表單驗證回調規則問題

編輯: 這是規則:

$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,但只要需要的是我的自定義前規則並且該字段爲空,它應該在必填字段消息處停止,而不是自定義方法消息。

+0

這往往表明'some_method'返回false。 'trim'永遠不會返回false,如果'required'返回false'some_method'將不會運行。沒有看到'some_method'的代碼很難提供建議。 – DFriend

回答

1

好吧,我設法通過擴展Form_validation庫來解決它,把我的回調方法和其他規則(不帶callback_前綴)放在一起。