コンテンツへスキップ
ポイント
- フォーム値の事前加工 は使えない。なぜなら加工前の値もバリデーションしたいため。
- クロージャの使用 – カスタムバリデーションルールのメソッドを定義 し、その中でフォーム値を加工してバリデーションを行う。
- ただし、
rules メソッド内に 2 つ以上のクロージャのルールが存在するとテスト時にどのクロージャがテストに該当するのかわからなくなる。そのため試してはいないが ルールオブジェクトの使用 – カスタムバリデーションルールのメソッドを定義 をした方が良いと思われる。
- 今回はクロージャの使用を押し通したため、テストではエラーメッセージを確認することでどのルールで不正となったかを確かめている。
- カスタムバリデーションルールのメソッド内では
'required', 'email:rfc,spoof' といったバリデーションルールを宣言できない。とはいえ該当するバリデーションロジックを書くのは車輪の再開発となり、おかしい。探すと、 Illuminate\Validation\Concerns\ValidatesAttributes トレイトに各バリデーションルールの実装となっているのでこれを use して利用する。