Выбор формы Laravel - PullRequest
       4

Выбор формы Laravel

2 голосов
/ 14 марта 2019

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

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

У меня нет экземпляра larvel, на котором я мог бы протестировать, но просто поместил PHP как статический, поэтому после рендеринга DOM вы не можете обновить вывод с помощью PHP, то есть поместить $event->id в действие, когда выпадающий список (или любой элемент)измененоЕсли бы вы хотели, вам нужен JavaScript.Однако я бы выбрал более прямой подход.

Вам нужно будет создать общий маршрут редактирования на вашем контроллере и указать в качестве значения id опции.

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

0 голосов
/ 14 марта 2019

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

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...