TheRikipm
@TheRikipm
Backend джун

Почему ошибка о неверных данных для входа ассоциирована с email?

Использую стандартный модуль для аутентификации.
Есть следующая страница login.blade.php
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror"name="email" value="{{ old('email') }}" autofocus>
@error('email')
    <span class="invalid-feedback" role="alert">
        <strong>{{ $message }}</strong>
    </span>
@enderror

<input id="password" type="password" class="form-control @error('password') is-invalid @enderror"name="password" value="{{ old('password') }}" autofocus>

@error('password')
    <span class="invalid-feedback" role="alert">
        <strong>{{ $message }}</strong>
    </span>
@enderror

Здесь:
1. В случае проблем с полем email (например поле пустое), выведется первый спан, внутри него текст ошибки (Email field cannot be empty)
2. Аналогично для пароля, но тут уже выводится второй спан
3. НО, в случае передачи неверных данных для входа ошибка "This credentials dont match our records" выводится в первом спане

Смог нагуглить что запись
@error('email')
Эквивалентна
@if ($errors->has('email'))

Сделал вывод что с помощью $errors->first('MyField') мы можем получить ошибку "ассоциированную" с полем MyField.

Собственно вопросы:
1) Почему ошибка This credentials dont match our records выводится в первом спане (т.е. ассоциирована с полем email и возвращается при помощи $errors->first('email'))? Что делать если я хочу выводить ошибки о пустом email и о неверных данных в разных блоках? Как ассоциировать ошибку о неверных данных с другим полем?
Порылся в исходниках и не нашел места где это происходит.

2) Как получить полный список всех ошибок в формате
Имя Поля : Текст ошибки (ну или любом похожем)?

Пробовал print_r($errors->all()), но выводится просто массив всех ошибок, без данных о том с каким полем они ассоциированы.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
TheRikipm
@TheRikipm Автор вопроса
Backend джун
Мда, только запостил вопрос и сразу нашел ответ. Не знаю удалять или нет, возможно кто-то столкнется с такой-же проблемой

файл
vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php:133


protected function sendFailedLoginResponse(Request $request)
{
    throw ValidationException::withMessages([
        $this->username() => [trans('auth.failed')], // <-- Вот тут нужно поменять $this->username на имя любого поля
    ]);
}

/**
 * Get the login username to be used by the controller.
 *
 * @return string
 */
public function username()
{
    return 'email';
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Amigoweb Магнитогорск
от 50 000 до 70 000 руб.
от 80 000 до 160 000 руб.
Brizo CRM Москва
от 100 000 до 150 000 руб.
17 нояб. 2019, в 07:16
500 руб./за проект
17 нояб. 2019, в 06:44
100000 руб./за проект