У меня есть целевая страница с кнопками «Создать», «Редактировать» и «Удалить». Кнопка «Редактировать» связана с меню выбора (выпадающим), а мой маршрут для URL-адреса — /events/{number}/edit.
Как я получу свой URL для записи в этом формате, поскольку страница уже будет загружена, а затем будет сделан выбор.
<div class = "col-sm-4">
<form method = "get" action = "{{ route('events.edit', ['event_id' => '2']) }}">
<label>Event Name</label>
<select name = "event_edit" class = "form-control form-control-lg">
@foreach($events as $event)
<option>{{$event->event_name}}</option>
@endforeach
</select>
<button type = "submit" class = "btn btn-primary btn-round">Edit</button>
</form>
</div>
Вышеупомянутое работает, но мне нужно указать event_id вручную, для которого установлено значение 2, понадобится ли для этого javascript?
Route::resource('events', 'EventController');
GET|HEAD | events/{event}/edit | events.edit | App\Http\Controllers\EventController@edit | web
CSRF будет добавлен, как только я заставлю это работать, я бесполезен во внешнем интерфейсе.
Используя метод ресурсов Laravel, ресурс events.edit должен «Показать форму для редактирования указанного ресурса». а затем вызвать метод обновления после того, как обновления были сделаны?
Вы можете просто отправить форму на что-то вроде events.edit без идентификатора. Поместите идентификатор в опцию, а затем перенаправьте браузер на правильный путь с этими данными.
если вы хотите, чтобы раскрывающийся список для каждого события обернул все событие в цикл for






хм. Нужна ли нам здесь форма-действие? Как насчет этого:
<div class = "col-sm-4">
<form method = "get" action = "">
<label>Event Name</label>
<select name = "event_edit" class = "form-control form-control-lg"
onChange = "window.location.href='/events/' + this.options[this.selectedIndex].value + '/edit'">
@foreach($events as $event)
<option value = "{{$event->id}}">{{$event->name}}</option>
@endforeach
</select>
</form>
</div>
У меня нет экземпляра larvel, на котором я мог бы протестировать, но просто предположил, что PHP является статическим, поэтому после рендеринга DOM вы не можете обновить вывод с помощью PHP, т.е. поместить $event->id в действие при изменении раскрывающегося списка (или любого элемента). Если вы хотите, вам понадобится JavaScript. Однако я бы предпочел более прямолинейный подход.
Вам нужно будет создать общий маршрут редактирования на вашем контроллере и указать идентификатор опции в качестве значения.
<div class = "col-sm-4">
<form method = "get" action = "{{ route('events.edit') }}">
<label>Event Name</label>
<select name = "event_edit" class = "form-control form-control-lg">
@foreach($events as $event)
<option value = "{{$event->id}}">{{$event->name}}</option>
@endforeach
</select>
</form>
</div>
Теперь, когда форма будет отправлена, у вас будет идентификатор события, которое пользователь хотел отредактировать. Просто используйте это, чтобы получить событие в контроллере и отобразить экран редактирования для этого события. Если вы хотите, чтобы URL-адрес отображался красиво, как site.com/edit/event/3, вы можете использовать что-то вроде
return redirect()->route('route.name', [$param]);
который должен перенаправлять на этот URL-адрес маршрутов с параметром, являющимся идентификатором, а затем выполнять всю логику для получения и отображения там.
@CodeBoyCode это запрос
get, так что он не пропал.