woodman0224
@woodman0224 (林 正)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Laravelバリデーション required_ifの挙動について

解決したいこと

あるフラグが特定の値にのみバリデーションを作動させたいです。
フォームリクエストのルールにて下記のように記述しております。

'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

1Answer

Comments

  1. @woodman0224

    Questioner

    コメントありがとうございます!
    なるほど、下書き用のためにバリデーションというより、登録用のためにrequiredのバリデーションをつけてあげればいいということですね。
    発想が真逆になっていました。ありがとうございます!

Your answer might help someone💌