Прежде всего, поверь мне, мы все были там, где ты сейчас. Это разочарование при изучении новой структуры и как она работает.
Один совет - внимательно изучить документацию, там нет ничего, что вы не можете найти там, когда дело доходит до Laravel. Ну, по крайней мере, ничего, что вам часто нужно.
Теперь о вашей проблеме, вы сказали:
Я просто хочу передать сообщение об ошибке от контроллера, чтобы просмотреть и показать его
с моим собственным HTML-шаблоном.
Итак, я собираюсь сделать дикое предположение и сказать, что вы сами обрабатываете процесс входа в систему, а не используете встроенную функциональность Laravel.
В случае, если я ошибаюсь, и вы используете встроенную функцию входа в laravel, все что вам нужно сделать, это:
Случай 1: при использовании встроенной функции входа в Laravel
@if ($errors->has('email'))
<span class="invalid-feedback">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
Laravel возвращает ошибки с ключами «электронная почта» при вводе неверных учетных данных и пытается войти в систему, поэтому просто распечатайте сообщение, используя $errors->first('email')
, в зависимости от того, что вам нужно, и стилизуйте его так, как вам хочется.
Теперь, если я прав, и вы используете собственный метод входа:
Случай 2: при использовании пользовательских функций входа в систему
В вашем контроллере вы можете настроить свои сообщения так:
$messages = [
'email.required' => 'Email is required!',
'password.required' => 'Password is required!'
];
$validatedData = $request->validate([
'email' => 'required|email',
'password' => 'required|string',
], $messages);
Конечно, это всего лишь пример, вы можете иметь различные проверки и соответствующие пользовательские сообщения. Если вы хотите использовать встроенные сообщения об ошибках проверки, просто не предоставляйте массив сообщений, например:
$validatedData = $request->validate([
'email' => 'required|email',
'password' => 'required|string',
]);
Когда вы используете validate()
метод на $request
, если проверка не пройдена, Laravel по умолчанию возвращает действительный ответ об ошибке для блейда, этот ответ будет иметь ключи, такие же, как имя и значение переменной вашего запроса, что и сообщение об ошибке, и вы можно легко получить к ним доступ, так же, как в случае 1:
@if ($errors->has('email'))
<span class="invalid-feedback">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
И вы настроены.
В конечном итоге, возможно, из вашего контроллера вы захотите вернуть какую-то пользовательскую ошибку, кроме проверки следующего случая использования:
Случай 3: когда вы используете пользовательские функции входа в систему и хотите вернуть пользовательское сообщение об ошибке, отличное от проверки
Внутри вашего контроллера используйте withErrors()
метод:
return Redirect::back()->withErrors(
[
'email' => 'Snap! you are done!'
]
);
Как вы уже догадались, показ этой ошибки внутри вашего представления точно такой же, как и раньше:
@if ($errors->has('email'))
<span class="invalid-feedback">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
Надеюсь, это поможет
Удачного кодирования:)