Laravel で値がない時にカスタムバリデーションがうまく効かない問題への対策


結構ハマったので、メモ。

前提

  • 特定条件のときだけ必須にしたかった。(return が trueの時だけ、第1引数のプロパティに、第2引数のバリデーションルールを追加する)
$validator->sometimes('fuga', ['nullable', new RequiredIfHoge($status)], function ($input) {
            return $input->piyopiyo == true;
        });

原因

class RequiredIfHoge implements Rule

で値がないときに動かなかった

対応

class RequiredIfHoge implements ImplicitRule

で、nullの時でも入力チェックが発動するようになった。