5
9

More than 3 years have passed since last update.

【Laravel】配列のバリデーション

Posted at

フォームのフィールドが配列の場合のバリデーションについてのメモです。

ドット記法

配列に対してバリデーションを行うためにはドット記法を使い、.で配列の階層を表します。また*で配列内すべてを表します。

//photos[profile]フィールドを指定
$validator = Validator::make($request->all(), [
    'photos.profile' => 'required|image',
]);

//keywordフィールドすべてを指定
$validator = Validator::make($request->all(), [
    'keyword.*' => 'required|max:20',
]);

エラーメッセージの取得

Illuminate\Support\ViewErrorBag {
  #bags: array:1 [
    "default" => Illuminate\Support\MessageBag {
      #messages: array:2 [
        "keyword.0" => array:1 [
          0 => "キーワードは、20文字以下で指定してください。"
        ]
        "keyword.1" => array:1 [
          0 => "キーワードは、20文字以下で指定してください。"
        ]
        "keyword.2" => array:1 [
          0 => "キーワードは、20文字以下で指定してください。"
        ]
      ]
      #format: ":message"
    }
  ]
}

配列にバリデーションを設定した場合、エラーメッセージも配列で返ってくるため、取得もドット記法で行います。

foreach ($errors->get('keyword.*') as $messages) {
    foreach ($messages as $message){
       //
    }
}
5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9