
じろう
2019年11月02日に参加
学習履歴詳細
[Laravel]課題アプリのバリデーションをカスタマイズしたい
今日のYWT
やったこと
Travelog
- バリデーションメッセージの編集
- バリデーションのドキュメント読む
わかったこと
ArticleRequest.php
に以下のような画像バリデーションのコードがある
public function rules() { return [ // 中略 // 画像ファイル 'files.*.photo' => 'image|mimes:jpeg,bmp,png', ]; }
image
で画像(jpg、png、bmp、gif、svg、webpのどれか)形式かチェックし、 mimes:jpeg
, bmp, pngで画像の中でもjpeg, bmp, pngであることを求めている。
この状態で、例えばまず image
のバリデーションに引っかかるようなファイル(例えば今回はzip)をアップロードすると、バリデーションエラーメッセージが2つ出てしまう。
アップロードするファイルには画像ファイルを指定してください。 アップロードするファイルにはjpeg, bmp, pngタイプのファイルを指定してください。
これを、image
のバリデーションに引っかかった時点で mimes
のチェックはしない、もしくは mimes
のほうのバリデーションエラーメッセージを表示しない、という挙動にしたいと思った。
以前、教えてもらったように、エラーメッセージのカスタマイズでできないかと思い以下のように書いてみた。
// エラーメッセージのカスタマイズ public function messages() { return [ // attribute名 . 引っかかったバリデーションルール => 出したいメッセージ 'end_date.after_or_equal' => '開始日または終了日を確認してください', 'files.*.photo.mimes|files.*.photo.image' => 'jpeg, bmp, pngタイプの画像ファイルをアップロードしてください', ]; }
しかしこれだと、エラーメッセージは上で貼ったものと変わらず同じ
このようなケースだと、バリデータの作成を使わないといけないかもしれない。
次やること
- バリデーションカスタマイズ終わらせる
- ページネーション実装
Laravel
2020年11月17日(火)
1.1時間