| 34件目(121件中) |

複数設定した検証ルールの途中で'last'でブレークする

固定リンク:#0000000090   投稿者:ZiSTA 日時:2009-12-29 17:03:27   コメント( 0

1つのフィールドに対して複数の検証ルールを設定する事が出来ます。デフォルトでは全ての検証が実行され、複数の検証エラーがあったとしても、最後のエラーが出力されることになります。


下記のような検証ルールを設定していて何も入力がなかった場合には全ての検証ルールがエラーになり、3番目の「登録されています」というメッセージが出力されます。可能なら2番目のエラーを出力し、3番目の検証ルールは実行すらしなくて良いところです。

    var $validate = array(
            'username' =>array(
                'custom'=>array(
                    'rule' => '/[\dA-Z_]/i',
                    'message' => '英数 と _ のみ使用出来ます。'),

                'between'=>array(
                    'rule' => array('between',3,18),
                    'required'=>true,
                    'message' => '3文字以上18文字以内のユーザー名を入力ください。'),

                'uniq'=>array(
                    'rule' =>'checkUnique',
                    'message' => '登録されています'),

            )
);


この様な時は'last'パラメータをtrueにセットする事で、その検証以降の検証をスキップしてくれます。


以下例では2番目に'last'パラメータをtrueにセットしています。何も入力がなかった場合には2番目の検証ルールがエラーになり、'last'パラメータによって以降の検証ルールをスキップします。そして2番目のエラーメッセージ「3文字以上18文字以内のユーザー名を入力ください。」を出力してくれます。

    var $validate = array(
            'username' =>array(
                'custom'=>array(
                    'rule' => '/[\dA-Z_]/i',
                    'message' => '英数 と _ のみ使用出来ます。'),

                'between'=>array(
                    'rule' => array('between',3,18),
                    'required'=>true,
                    'last'=>true,
                    'message' => '3文字以上18文字以内のユーザー名を入力ください。'),

                'uniq'=>array(
                    'rule' =>'checkUnique',
                    'message' => '登録されています'),
            )
);

 

コメント

| 34件目(121件中) |
↑ ページトップ