2017-02-08 14 views
0

私は、Codeigniter 3.xフォーム検証コールバックメソッドを組み合せトリムで使用しており、フィールドの検証に必要です。 私はそれらをパイプするときに問題があります:trim | required | callback_some_method、コールバックメソッドがトリムより優先され、必要であり、エラーメッセージを表示します。 これに関するアイデアですか?Codeigniterフォーム検証コールバックルールの問題

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を返しますが、限り、必要に応じて、私のカスタムの前にある必要がありますルールはフィールドが空ですが、それはそこで停止する必要があります必須のフィールドメッセージ、カスタムメソッドメッセージではありません。

+0

これは、 'some_method'がfalseを返すことを示す傾向があります。 'trim'はfalseを返すことはなく、' required'がfalseを返した場合、 'some_method'は実行されません。 'some_method'のコードを見ずにアドバイスをするのは難しいです。 – DFriend

答えて

1

私はForm_validationライブラリを拡張し、そこにコールバックメソッドを配置し、他のルールとして(callback_プレフィックスなしに)配管することで、それを解決することができました。

関連する問題