Laravel4、条件付きバリデーション
タグ: Laravel4
バリデーションの新しい機能が追加されました。条件付きのバリデーションです。
例えば、有料サービスに申し込んだ人だけ、カード番号入力必須にしたい場合に利用します。(まあ、Javascript利用し、見せ方を変えてあげるほうがユーザーには親切ですね。)
// 試していません。適当にタイプしたコードです。
// paid : 有料の時、チェック('1')
// card_number : カード番号
$inputs = Input::only(array('paid', 'card_number');
$rules = array();
$val = Validator::make($inputs, $rules); // 通常通り、インスタンスを生成
// 条件付きバリデーション付加
$val->sometimes('card_number', 'require|numeric|size:16', function($input) {
return $input->paid == '1'; // 返却値がtrueの場合のみ、このルールを適用
));
if ($val->passes()) ... // 普通どおりにバリデーション結果をチェック
複数のフィールドに条件付きバリデーションルールを適用したい場合は、最初の引数を配列にし、複数フィールドを指定します。