Сохранять выбор / значение раскрывающегося списка при неудачной отправке формы - Laravel 6.x - PullRequest
0 голосов
/ 02 марта 2020

Я создал форму отправки в Laravel 6.x, которая включает в себя выпадающие списки, каждый из которых заполняется базой данных, используя "@foreach" l oop в блейд-файле. Вот мой код HTML / PHP:

<div id="event-sport">
    <span>Sport:</span>
    <select name="sport">
        <option value="default" selected="selected" disabled hidden>Select Sport</option>
        @foreach($sports as $sport)
            <option value="{{ $sport->id }}" title="{{ $sport->desc }}">{{ $sport->name }}</option>
        @endforeach
    </select>
    @if ($errors->has('sport'))
        <span id="error-msg" style="color:red; font-size:1.5vh;"><br>{{ 'Please select a sport' }}</span>
    @endif
</div>

Я использую вспомогательный метод "{{old ('')}}", чтобы сохранить другие входные данные после неудачной отправки формы в таких элементах, как textareas. и входные данные, но я не знаю, как сохранить выбранную опцию (вместе с ее значением) из раскрывающегося списка.

Текущее поведение выпадающего списка выглядит следующим образом:

  1. Форма загружена - ничего не выбрано
  2. Я выбираю вариант
  3. Я отправляю форму (без правильного заполнения остальной части, чтобы она все равно не работала)
  4. Форма не возвращает сообщение об ошибке для этого выпадающего списка, но выбор установлен на по умолчанию (" Выбрать спорт ")
  5. Я повторно отправляю форму, не касаясь раскрывающегося списка
  6. Форма возвращает сообщение об ошибке для этого раскрывающегося списка, спрашивая выбрать опцию

Заранее спасибо за ваши предложения!

1 Ответ

0 голосов
/ 02 марта 2020

Итак, я понял это благодаря источнику , предоставленному Филиппом. В конце концов, ответ был довольно прост.

Все, что я сделал, это добавил {{ old('sport') == "$sport->id" ? 'selected' : '' }} внутри тега <option> в поле выбора, внутри foreach l oop. Однако эта строка была немного изменена для формы редактирования, поскольку там сначала нужно извлечь значения из базы данных, а затем изменить из «старого» выбора.

Создать форма:

<div id="event-sport">
    <span>Sport:</span>
    <select name="sport">
        <option value="default" selected="selected" disabled hidden>Select Sport</option>
        @foreach($sports as $sport)
            <option value="{{ $sport->id }}" {{ old('sport') == "$sport->id" ? 'selected' : '' }} title="{{ $sport->desc }}">{{ $sport->name }}</option>
        @endforeach
    </select>

    @if ($errors->has('sport'))
        <span id="error-msg" style="color:red; font-size:1.5vh;"><br>{{ 'Please select a sport' }}</span>
    @endif
</div>

Редактировать из:

<div id="event-sport">
    <span>Sport:</span>
     <select name="sport">
         <option value="{{$event->sport->id}}" selected="selected" disabled hidden>{{$event->sport->name}}</option>
         @foreach($sports as $sport)
             <option value="{{ $sport->id }}" {{ $event->sport->id == "$sport->id" ? 'selected' : '' }} title="{{ $sport->desc }}">{{ $sport->name }}</option>
         @endforeach
     </select>

     @if ($errors->has('sport'))
         <span id="error-msg" style="color:red; font-size:1.5vh;"><br>{{ 'Please select a sport' }}</span>
     @endif

 </div>

Обратите внимание, как в Редактировать форма, дополнение к <option> тег {{ $event->sport->id == "$sport->id" ? 'selected' : '' }}.

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