Laravel - Validation - Validating Nested Array Input

Validating nested array based form input fields doesn't have to be a pain. You may use "dot notation" to validate attributes within an array. For example, if the incoming HTTP request contains a photos[profile] field, you may validate it like so:

    
    use Illuminate\Support\Facades\Validator;
    
    $validator = Validator::make($request->all(), [
        'photos.profile' => 'required|image',
    ]);
	

You may also validate each element of an array. For example, to validate that each email in a given array input field is unique, you may do the following:

    
    $validator = Validator::make($request->all(), [
        'person.*.email' => 'email|unique:users',
        'person.*.first_name' => 'required_with:person.*.last_name',
    ]);
	

Likewise, you may use the * character when specifying custom validation messages in your language files, making it a breeze to use a single validation message for array based fields:

    
    'custom' => [
        'person.*.email' => [
            'unique' => 'Each person must have a unique email address',
        ]
    ],