Директива @error в Laravel
В прошлом уроке ошибку выводили
через $errors->first.
Так работает, но не всегда удобно:
метод вызывается при каждом
показе формы. Если ошибки нет,
вернётся пустая строка - текста
не будет, а место в вёрстке
под сообщение уже зарезервировано.
Стилизовать «красный блок ошибки»
вокруг first сложнее -
пустой блок может остаться и
без ошибки.
Логичнее показывать разметку
с сообщением только тогда,
когда ошибка реально есть.
В Blade для этого есть директива
@error: она сама проверяет
поле и выводит содержимое блока
лишь при неудачной валидации.
Вручную писать @if
не нужно.
Ошибку по-прежнему ставим
над инпутом, поле оборачиваем
в div. Блок @error
идёт перед input:
<div>
@error('title')
<span>{{ $message }}</span>
@enderror
<input name="title" value="{{ old('title') }}">
</div>
Внутри @error доступна
переменная $message -
текст ошибки для этого поля.
Тег span можно заменить
на p или оформить классом
в CSS - структура на ваш вкус.
Пример для поля email:
<div>
@error('email')
<div>{{ $message }}</div>
@enderror
<input name="email" value="{{ old('email') }}">
</div>
Замените вывод через
$errors->first на
@error для поля title.
Добавьте @error
для поля email.