[Laravel] 配列のバリデーションルールの書き方

概要

Laravelで配列のバリデーションルールを定義する場合、配列自体と配列の要素にそれぞれルールを定義する必要がある。
また、多次元配列の場合、各次元のルールを定義する必要がある。

サンプル

通常の配列(一次元配列)の場合

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreItemRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            'item_name' => ['required', 'array'],
            'item_name.*' => ['required', 'string', 'max:20'], // 各要素は必須で最大20文字まで
        ];
    }
}

二次元配列の場合

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreItemRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            'item_name' => ['required', 'array'],
            'item_name.*' => ['required', 'array'], // 一次元配列の要素は必須
            'item_name.*.*' => ['nullable', 'integer'], // 二次元配列の要素はnull許可で数値
        ];
    }
}

インデックス指定する場合

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreItemRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            'item_name' => ['required', 'array'],
            'item_name.0' => ['required', 'array'],
            'item_name.1' => ['required', 'array'],
            'item_name.0.*' => ['nullable', 'integer'],
            'item_name.1.*' => ['nullable', 'integer'],
        ];
    }
}

コメント

タイトルとURLをコピーしました