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()) ... // 普通どおりにバリデーション結果をチェック

複数のフィールドに条件付きバリデーションルールを適用したい場合は、最初の引数を配列にし、複数フィールドを指定します。