概要
バリデーションの結果エラーが発生した場合、$errors
にメッセージ群が格納され、ビュー側でそれを参照できる。
全てのエラー
$errors->all()
$errors
は単なるコレクションではなくIlluminate\Support\MessageBag
のインスタンス。ビューですべてのメッセージを一つずつ取り出すには例えば以下の様に記述する。
1 2 3 |
@foreach ($errors->all() as $error) <p>{{ $error }}</p> @endforeach |
たとえばフォームリクエストで以下のようなバリデーションルールを設定した場合。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class ItemRequest extends FormRequest { ........ public function rules() { return [ 'name' => ['required'], 'price' => ['required', 'integer', 'min:0'], 'image' => ['file', 'mimes:jpeg,jpg,png', 'dimensions:min_width=100,min_height=100,max_width=800,max_height=600'], ]; } } |
フォームで何も入力しないでPOSTすると、以下のエラーが表示される。
1 2 3 4 5 6 7 8 9 |
名前は必ず指定してください。 priceは必ず指定してください。 imageにはファイルを指定してください。 imageにはjpeg, jpg, pngタイプのファイルを指定してください。 imageの図形サイズが正しくありません。 |
特定の項目のエラー
$errors->has('項目名')
と$errors->first('項目名')
has()
メソッドはフォームの入力項目名を指定して、それに対するエラーがあるかどうかを判定し、first()
メソッドは入力項目に対するエラーのうち1つを得る。
これら2つを組み合わせて、特定項目のエラーを1つだけ表示させる例は以下の通り。
1 2 3 |
@if ($errors->has('image')) <p>{{ $errors->first('image') }}</p> @endif |
先ほどの例では、image
の項目でファイルを選択しないと3つのエラーが表示されたが、この場合はそのうちの1つだけが表示される。
1 |
imageにはファイルを指定してください。 |
$errors->get('項目名')
get()
メソッドは、指定した項目に関するすべてのエラーをコレクションで返す。先ほどの例で、image
に関するエラーだけを全て表示するには以下のように書く。
1 2 3 |
@foreach ($errors->get('image') as $error) <p>{{ $error }}</p> @endforeach |
ファイルを選択せずにPOSTすると、image
に関するバリデーションエラーがすべて表示される。
1 2 3 4 5 |
imageにはファイルを指定してください。 imageにはjpeg, jpg, pngタイプのファイルを指定してください。 imageの図形サイズが正しくありません。 |