@lolrofl01

Как в laravel при ошибке в валидации формы наглядно показывать какое поле с ошибкой?

САБЖ. После сабмита формы, информация попадает в валидатор. Если валидатор находит ошибку, он редиректит обратно на форму с массивом ошибок. В целом это все в документации подробно описано, как вывести эти ошибки и так далее. Меня интересует другое - как сделать подсветку полей с ошибкой, и, желательно, под каждым полем указать саму ошибку?

У меня вышло сделать это используя все подряд конструкции из документации, но код получился, мягко говоря, плохо читаемым. Уверен, есть способ сделать легче. Вот код:
<input class="form-control" name="inn" type="text" value="{{ old('inn') }}">
                                    <div class="div_error">
                                        {{ $errors->first('inn') }}
                                        @if( session('bad_inn') == 1 )
                                            Неправильное ИНН
                                        @endif
                                    </div>


Суть такая: есть обычное текстовое поле для ввода ИНН. Поле проходит валидатор, если есть ошибка именно в этом поле, то она будет записана в див с классом errors. Далее на js проверяю, если див эррор не пустой, тогда соседнее с ним поле окрашиваю красным. И вторая ошибка bad_inn - это уже моя наработка, проверяю после валидатора по своей базе ИНН, если не нахожу введенное, то вывожу ошибку.

Уверен, что у меня сделано в корне неверно, хоть и работает, и можно как-то намного проще реализовать эту задумку. И как подсветить поле, и как добавить свои ошибки не таким способом, как у меня. Тем более если форма состоит из 20+ полей, это физически очень муторно писать.

Заранее благодарю!
  • Вопрос задан
  • 1021 просмотр
Решения вопроса 1
@Yan-s
Типичная для бутстрапа конструкция:
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
  <input id="password" placeholder="Пароль" type="password" class="form-control" name="password" required>
  @if ($errors->has('password'))
    <span class="help-block">
      <strong>{{ $errors->first('password') }}</strong>
    </span>
  @endif
</div>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы