日報

日報です。

Laravel Validationの場合分け。sometimes編

laravelのrogo
laravel

Laravel10 です。

チョット忘れたので書いておきます。

例えば、ユーザーが20歳未満の場合は非表示、それ以上は表示みたいに 条件によって、validationしたい場合があります。

その場合は、sometimesを利用します。

readouble.com

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は無効になります。