#laravel #laravel-livewire
Вопрос:
У меня есть выпадающий список, и на странице редактирования я хочу показать старые данные. Я использую этот код, но он все равно показывает «пожалуйста, выберите». В чем проблема?
lt;select wire:model.defer="form.department" id="form.department" class="tf-input"gt; lt;option value="null" selected disabledgt;{{ __('Please select') }}lt;/optiongt; @foreach($this-gt;departments as $department) lt;option {{ $form-gt;department_id == $department-gt;id ? 'selected' : '' }} value="{{ $department-gt;id }}" gt;{{ $department-gt;name }}lt;/optiongt; @endforeach lt;/selectgt;
Комментарии:
1. Я попробовал это, но не получилось
Ответ №1:
Livewire не прослушивает selected
атрибуты в HTML , когда вы используете wire:model
, потому что он перезапишет их значением компонента. Для этого полностью удалите его.
lt;select wire:model.defer="form.department" id="form.department" class="tf-input"gt; lt;option value="null" disabledgt;{{ __('Please select') }}lt;/optiongt; @foreach ($this-gt;departments as $department) lt;option value="{{ $department-gt;id }}" wire:key="department-{{ $department-gt;id }}"gt;{{ $department-gt;name }}lt;/optiongt; @endforeach lt;/selectgt;
Как вы можете видеть, я удалил части , которые добавляют selected
, но я также добавил a wire:key
к параметрам — это связано с тем, что элементы отображаются в цикле и помогут Livewire отслеживать все элементы на странице.
Чтобы задать значение , связанное через wire:model
, вам необходимо задать значение в компоненте. Таким образом, в этом mount()
методе вы можете сделать
$this-gt;form['department'] = $department-gt;id;