質問
Laravel5.4でsometimes validationをつける際に、以下の3つの場合で動作の違いがあるか確認したく、質問致しました。
email => 'sometimes|required|email'
email => 'sometimes|email'
email => 'email'
sometimes制約の認識としては、与えたinput配列にfield(今回だとemail
)があったときだけvalidationが走るというものだと思っています。
しかし、公式ドキュメントを見ると、以下のように sometiems|requied|email
というようにrequired制約もついています。requiredは入力にfieldがチェックするものなので、 sometimes
がついていれば必要ないように感じます。
また、 sometimes制約もつけなくても(パターン3)場合も、入力に指定したfield(email
)がなければvalidationは走らないと思います。
sometimes制約の正しい書き方と、各パターンに動作の違いがあればご教授頂きたいです。
よろしくお願いいたしますm(__)m
php
1$v = Validator::make($data, [ 2 'email' => 'sometimes|required|email', 3]);
補足
実際に以下のメソッドをEloquentに追加して php artisan tinker
で、以下の2つを試してみましたが各パターンのValidation結果に違いはありませんでした。
- 入力にfieldがある場合の3パターン
- 入力にfieldがない場合の3パターン
php
1 public function validation_test() { 2 $inputs = [ 3 'id' => 1, 4 ]; 5 6 $rules = [ 7 'email' => 'sometimes|required|email', 8 ]; 9 10 $validator = \Validator::make($inputs, $rules); 11 12 if ($validator->fails()) { 13 return $validator->errors()->all(); 14 } elseif ($validator->passes()) { 15 return $this->create($inputs); 16 } 17 18 }

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/28 04:32 編集