次のようinputタグにmultiple属性をつけて複数のファイルをアップロードするときのリクエストの検証方法について。
<input type="file" class="form-control" name="images[]" multiple>
アップロードされたファイルがPNGファイルであることを検証する例です。
1つ以上のファイルがアップロードされていることを検証します。
バリデーションルールには「required」「array」を指定します。
$request->validate([
'images' => 'required|array',
], [
'images.required' => '画像ファイルを選択してください。',
]);
次に、配列の各要素が画像であることを検証します。
配列中の属性のバリデーションには「ドット記法」を使用します。
バリデーションルールには「required」「file」「mimes」を指定します。
$request->validate([
'images.*' => 'required|file|mimes:png'
], [
'images.*.required' => '画像ファイルを選択してください。',
'images.*.file' => '画像ファイルを選択してください。',
'images.*.mimes' => 'PNGファイルを選択してください。',
]);
全体のコードは次のようになります。
public function upload(Request $request)
{
$request->validate([
'images' => 'required|array',
'images.*' => 'required|file|mimes:png'
], [
'images.required' => '画像ファイルを選択してください。',
'images.*.required' => '画像ファイルを選択してください。',
'images.*.file' => '画像ファイルを選択してください。',
'images.*.mimes' => 'PNGファイルを選択してください。',
]);