Laravel: проверьте причину сбоя валидатора - PullRequest
0 голосов
/ 30 декабря 2018

Я предварительно проверяю атрибут по двум правилам: required и unique.Атрибут att1 в сочетании с att2 и att3 должен быть уникальным в базе данных.Я хочу отобразить сообщение об ошибке в другом месте по разным причинам сбоя.Например, если проверка не удалась из-за правила required, я хочу отобразить сообщение об ошибке в одном элементе div, а если произошла ошибка из-за правила unique, я хочу отобразить сообщение об ошибке в другом div.

Вот мой валидатор:

$messages = [
        'att1.unique' => 'Given combination has already been registered.',
        'att1.required' => 'Please select att1',
        'att2.required' => 'Please select your att2',
        'att3.required' => 'Please select your att3',
    ];
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:6', 'confirmed'],
        'att1' => [
            'bail','required',
            Rule::unique('users')->where(function ($query) use($attr1,$attr2,$attr3) {
                return $query->where('att1', $attr1)
                ->where('att2', $attr2)
                ->where('att3', $attr2);
            }),
        ],
        'att2' => ['required'],
        'att3' => ['required'],
    ],$messages);

Как отобразить сообщение об ошибке для att1.unique и att1.required в разных местах, когда они появляются?

1 Ответ

0 голосов
/ 30 декабря 2018

Вам потребуется выполнить две условные проверки следующим образом.

if ($errors->has('att1')) {
    foreach ($errors->get('att1') as $error) {
        // This would list all errors for the att1 field
        // Then it's just a simple conditional statement to
        // check if it's the error you want
        if($error == 'Please select att1') {} 
    }
}

и повторить это для уникального правила.Кажется, я не могу найти другой лучший способ сделать это.

Вы можете проверить документацию о том, как извлечь ошибки для определенного поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...