Laravelバリデーション required_ifの挙動について
Q&A
Closed
解決したいこと
あるフラグが特定の値にのみバリデーションを作動させたいです。
フォームリクエストのルールにて下記のように記述しております。
'company_name' => ['required_if:draft_flg,0|string'],
これで入力値が空文字の状態で確かめてみると入力値が空文字なのに、draft_flgというカラムの値が0の場合でもデータが登録されてしまいました。
続いてこのようにすると
'company_name' => ['required_if:draft_flg,0','string'],
draft_flgが0の場合は入力値が空文字の状態なのでバリデーションエラーが実行されたのですが、draft_flgが1の場合、stringのバリデーションが実行されてしまいました。
実現したいこととしては
draft_flgが0の場合は、required,stringなどのバリデーションを実行したいです。
draft_flgが1の場合は、バリデーションをスキップしたいです。
'company_name' => 'required_if:draft_flg,0','string',
このようにすると、入力値が空文字でdraft_flgが0の場合は登録されず、draft_flgが1の場合は、登録できるのですが、これで合っているのでしょうか?
こう言った書き方を調べても見つからないので、正しいのかわかりません。
0