Как отобразить старые данные выбранного элемента

#laravel

#laravel

Вопрос:

Я застрял на 2 дня, вы знаете, как отобразить старые данные выбранного элемента в Laravel?

 <select name="sexe" id="sexe" class="form-control">
 <option value="">Choice</option>
 <option>Women</option>
 <option>Man</option>
 </select>
  

Я пробовал это, но безуспешно:

 <select class="form-control" name="sexe">
   <option value="male" @if (old('sexe') == 'male') selected="selected" @endif>male</option>
   <option value="female" @if (old('sexe') == 'female') selected="selected" @endif>female</option>
</select> 
  

Мой контроллер

 public function edit($id)
{
        //
  $candidats = Candidat::find($id);
  $permis = Permis::all();
  return view('admin.candidats.edit', compact('candidats', 'permis'));
}

public function update(Request $request, $id)
{
     $request->validate([
           'sexe' => 'required|string',
           'fk_permis' => 'required'
    ]);

      $candidats = Candidat::find($id);
      $candidats->sexe = $request->get('sexe');
      $candidats->fk_permis = $request->get('fk_permis');
      $candidats->save();
        return redirect()->route('candidats.index')
                    ->with('success', 'mise à jour effectuée');
    }
  

Редактировать:
1) index.blade.php

введите описание изображения здесь

2) edit.blade.php

введите описание изображения здесь

Ответ №1:

В вашей функции обновления поместите withInput() :

 return redirect()->route('candidats.index')
                    ->with('success', 'mise à jour effectuée')->withInput();
  

В вашем select вы можете сделать это:

 <select class="form-control" name="sexe">
   <option value="male" @if (old('sexe') == 'male') selected="selected" @elseif($candidats->sexe == 'male') selected="selected" 
 @endif>male</option>
   <option value="female" @if (old('sexe') == 'female') selected="selected" @elseif($candidats->sexe == 'female') selected="selected" 
 @endif>female</option>
</select> 
  

Я загрузил выбранный вариант из вашей модели здесь

@elseif($candidats->sexe == 'male') selected="selected"

Итак, если вы сохранили ‘male’ в своем sexe атрибуте, будет выбран этот параметр.

Взгляните сюда для получения дополнительной информации:

Комментарии:

1. У меня всегда одна и та же проблема. Элемент 1 всегда по умолчанию … 🙁

2. вы сохраняете правильный параметр в своей модели? убедитесь, что при нажатии на женскую опцию вы сохраняете женскую опцию в своей модели

3. Я отредактировал свое первое сообщение. (Есть 2 скриншота) В моем файле index.blade поле ‘sexe’ находится на ‘female’, когда я нажимаю на кнопку edit, в моем выпадающем списке отображается элемент ‘man’ вместо ‘female’ … 🙁

4. Вау!! Это работает, большое вам спасибо … 🙂 Вы лучшие… Где вы изучили Laravel???

5. Добро пожаловать, друг. Я научился сам, я посмотрел несколько видео, но ни одно из них не было хорошим. Что я делаю, так это много практикую, читаю документацию и помогаю людям, когда могу 🙂

Ответ №2:

Если старые данные были сохранены в виде модели, что я предполагаю, поскольку это вопрос Laravel, а не javascript, вы можете использовать привязку form-model, чтобы легко загрузить старые данные при следующем переходе на страницу.

Итак, когда вы открываете свою форму, привяжите модель:

 {{ Form::model($yourModel, array('route' => array('yourModel.update', $yourModel->id))) }}
  

И затем в рамках метода select laravel (коллективный) может автоматически присвоить старым данным выбранное значение. С помощью помощника Laravel это может выглядеть следующим образом:

 {!! Form::select('sexe', $listOfYourNameAndIdForYourSelectItem, null, ['class'=>'form-control', 'id'=>'sexe']) !!}
  

Вводя третий аргумент null , как указано выше, Laravel сделает старые данные модели выбранным элементом.

Проверьте документы в пакете Laravel forms для получения дополнительной информации.

Комментарии:

1. Спасибо за вашу помощь. Вы думаете, моя проблема в моем контроллере? Я отредактировал свое первое сообщение…

2. Зависит от того, как вы настроили форму. Если вы хотите воспользоваться преимуществами простой привязки Laravel, как указано выше, передайте $candidats модель в представление (возможно, новую при создании (если хотите) и сохраненную при обновлении, используя привязку при обновлении), и это автоматически сделает выбранный элемент «выбранным», используя формат в моем ответе.