How to validate multiple email in laravel validation?

We can achieve this without custom validation,We can overridden a method prepareForValidation

protected function prepareForValidation() 
{
   //Here email we are reciving as comma seperated so we make it array
   $this->merge(['email' => explode(',', rtrim($this->email, ','))]);
}

Then above function will call automatically and convert email-ids to array, after that use array validation rule

public function rules()
 {
     return [
        'email.*' => 'required|email'
     ];
 }

Laravel 5.2 introduced array validation and you can easily validate array of emails :)

All you need is exploding the string to array.

https://laravel.com/docs/5.2/validation#validating-arrays


In 5.6 or above you can define your validator rule as follows:

'email.*' => 'required|email'

This will expect the email key to be an array of valid email addresses.


You need to write custom Validator, which will take the array and validate each ofthe emails in array manually. In Laravel 5 Request you can do something like that

public function __construct() {
    Validator::extend("emails", function($attribute, $value, $parameters) {
        $rules = [
            'email' => 'required|email',
        ];
        foreach ($value as $email) {
            $data = [
                'email' => $email
            ];
            $validator = Validator::make($data, $rules);
            if ($validator->fails()) {
                return false;
            }
        }
        return true;
    });
}

public function rules() {
    return [
        'email' => 'required|emails'
    ];
}