Проверка при проверке массива в laravel - PullRequest
0 голосов
/ 17 сентября 2018

Если у меня есть правило проверки массива, как я могу проверить, является ли все элементы в массиве действительным электронным письмом?Я использую это: https://laravel.com/docs/5.1/validation#rule-array для правила проверки массива.

$this->validate($request, [
    'email' => 'required|array.email'
]);

Примечание: я использую версию laravel 5.1

Обновление -согласно запросу.

enter image description here

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вам нужен специальный валидатор. В Laravel Request вы можете сделать что-то подобное

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'
    ];
}

или

Проверка массивов laravel 5.2 и более поздних версий:

Проверка полей ввода формы массива не должна быть проблемой. Например, чтобы проверить, что каждое электронное письмо в данном поле ввода массива уникально, вы можете сделать следующее:

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

Аналогичным образом, вы можете использовать символ * при указании ваших проверочных сообщений в ваших языковых файлах, что упрощает использование одного проверочного сообщения для полей на основе массива:

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

Надеюсь, это поможет вам.

0 голосов
/ 17 сентября 2018

проверено, подтверждено:

выше 5,2

$this->validate($request, [
    'email.*' => 'required|array|email'
],[
    'email.required' => 'message required',
    'email.array' => 'message array',
    'email.email' => 'message email',
]);

ИЛИ

Менее 5,2

    $validator = \Validator::make($request->all(), [
        'email' => 'array',

        /* Other rules */

    ],[
        'email.required' => 'message required',
        'email.array' => 'message array',
        'email.email' => 'message email',
    ]);

    $validator->each('email', 'required|email');

    if($validator->fails()) 
        return back()->withErrors($validator->errors());


    dd('Success All Email ;)');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...