Параметр выбора формы Laravel

У меня есть целевая страница с кнопками «Создать», «Редактировать» и «Удалить». Кнопка «Редактировать» связана с меню выбора (выпадающим), а мой маршрут для 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    

@CodeBoyCode это запрос get, так что он не пропал.

nakov 14.03.2019 16:58

CSRF будет добавлен, как только я заставлю это работать, я бесполезен во внешнем интерфейсе.

Nathan K 14.03.2019 16:59

Используя метод ресурсов Laravel, ресурс events.edit должен «Показать форму для редактирования указанного ресурса». а затем вызвать метод обновления после того, как обновления были сделаны?

Nathan K 14.03.2019 17:02

Вы можете просто отправить форму на что-то вроде events.edit без идентификатора. Поместите идентификатор в опцию, а затем перенаправьте браузер на правильный путь с этими данными.

nerdlyist 14.03.2019 17:07

если вы хотите, чтобы раскрывающийся список для каждого события обернул все событие в цикл for

CodeBoyCode 14.03.2019 17:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
5
870
2

Ответы 2

хм. Нужна ли нам здесь форма-действие? Как насчет этого:

<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-адрес маршрутов с параметром, являющимся идентификатором, а затем выполнять всю логику для получения и отображения там.

Другие вопросы по теме