0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[laravel-admin]$formで条件付きのバリデーションを実装(Rule::when)

Last updated at Posted at 2023-07-30

laravel-adminとは

Laravelの管理画面作成用ライブラリ
https://www.laravel-admin.org/docs/en

やりたいこと

$form->rules()にLaravelのバリデーションルールを記載するが、入力値によってバリデーションの内容を変更できるようにしたい

※$form->rules()には書いてなさそう。

どうやったか?→Rule::when()を使って実装した

Laravelのバリデーションルールで、sometimesのような条件付きでバリデーションを実行してくれるメソッドRule::when()があるようなので、それを使って実装した。

実装サンプル
$form->currency('price_min', '価格(最小)')
    ->symbol('¥')->digits(0)->default(0)
    ->rules('required|integer|between:0,99999');

$form->currency('price_max', '価格(最大)')
    ->symbol('¥')->digits(0)->default(0)
    ->rules([
        'required', 'integer', 'between:0,10000',
        Rule::when(static fn($request) => $request->price_max > 0, ['gt:price_min']) ,
    ]);

→ 「価格(最大)」を設定する(1円以上)時だけ、「価格(最大) > 価格(最小)」のチェックをする

image.png

終わりに

Rule::when()はLaravelのバリデーションページに書いてなかった・・
laravel-adminを使わないときでもwhenメソッドは便利そう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?