Проверка Laravel с формой создания: получить старые входные данные для выпадающего списка - PullRequest
1 голос
/ 02 июня 2019

У меня есть приложение Laravel, которое использует форму для создания предметов.Форма использует проверку, как определено в документации Laravel в этом разделе .

У меня есть файл запроса StoreItem:

public function rules() {
  return [
      'item_name'=>'required',
      'category_id'=> 'required',
      'collection_id'=> 'required',
      'brewery_id'=> 'required',
  ];
}

и в контроллере у меня есть следующее:

public function store(storeItem $request)
    {
      $validated = $request->validated();
      $item = new Item([
          'user_id'               =>      Auth::id(),
          'item_name'             =>      $request->item_name,
          'category_id'           =>      $request->category_id,
          'collection_id'         =>      $request->collection_id,
          'brewery_id'            =>      $request->brewery_id,
      ]);
      $item->save();

Когда проверка обнаруживает ошибку, снова создается форма создания, но я не вижу старых входных данных.

Для полей ввода текста я сделал следующее:

<input type="text" class="form-control" name="item_name" value="{{ old('item_name') }}" />

, и это показывает старые входные данные, но что делать с выпадающими полями, такими как category_id, collection_id и brewery_id.Я хочу, чтобы они имели старое значение в качестве «выбранного» значения.

В настоящее время в форме, которую я имею (для раскрывающихся списков):

 <div class="form-group">
    <label class="form-label" for="brewery">Brewery: (*)</label>
    <select class="form-control" name="brewery_id" >
       @foreach($breweries as $brewery)
           <option value="{{ $brewery->id }}">{{ $brewery->brewery_name }}</option>
       @endforeach
    </select>
 </div>

Это кажется, источник указывает, что использование метода old () может даже не понадобиться, но если я не использую

Ответы [ 2 ]

2 голосов
/ 02 июня 2019

Вам необходимо вручную добавить атрибут selected к ранее выбранному значению. Например:

 <div class="form-group">
    <label class="form-label" for="brewery">Brewery: (*)</label>
    <select class="form-control" name="brewery_id" >
       @foreach($breweries as $brewery)
           <option value="{{ $brewery->id }}" {{ old("brewery_id") == $brewery->id ? "selected" : "" }}>{{ $brewery->brewery_name }}</option>
       @endforeach
    </select>
 </div>
1 голос
/ 03 июня 2019

попробуйте это тоже. Я добавил скобку открытой и близкой к (old('brewery_id')==$brewery->id)

<div class="form-group">
    <label class="form-label" for="brewery">Brewery: (*)</label>
    <select class="form-control" name="brewery_id" >
       @foreach($breweries as $brewery)
           <option value="{{ $brewery->id }}" {{ (old('brewery_id') == $brewery->id)? "selected" : "" }}>{{ $brewery->brewery_name }}</option>
       @endforeach
    </select>
 </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...