Laravel Validationの場合分け。sometimes編
Laravel10 です。
チョット忘れたので書いておきます。
例えば、ユーザーが20歳未満の場合は非表示、それ以上は表示みたいに 条件によって、validationしたい場合があります。
その場合は、sometimesを利用します。
use Illuminate\Support\Fluent; $validator->sometimes('reason', 'required|max:500', function (Fluent $input) { return $input->games >= 100; });
ここの記事ですね。
私たちのWebアプリケーションがゲームコレクター向けであると仮定しましょう。ゲームコレクターがアプリケーションに登録し、100を超えるゲームを所有している場合は、なぜこれほど多くのゲームを所有しているのかを説明してもらいます。たとえば、ゲームの再販店を経営している場合や、ゲームの収集を楽しんでいる場合などです。この要件を条件付きで追加するには、Validatorインスタンスのsometimesメソッドが使用できます。
もうチョット噛み砕きます。
この例では、まず'reason'というフィールドを用意しています。
ただし、入力値の'games'フィールドが100以上の場合に限り、'reason'フィールドが必須(required)になり、かつ最大500文字まで入力可能(max:500)であることになります。
一方で、ゲーム数が100未満であれば、'reason'フィールドのバリデーションはスキップされます。つまり、required|max:500は無効になります。