В Laravel, как я могу использовать переменную как часть URL-адреса в форме

У меня есть страница, на которую вы попадаете после ввода информации со страницы поиска. Таким образом, пользователь переходит на страницу поиска, фильтрует то, что ему нужно, после чего он выбирает, какую аренду он хочет просмотреть, и нажимает кнопку просмотра, которая содержит строку запроса с параметрами. Это относится к:

Route::get('rental/{rental}', 'RentalsController@rental');

Эта часть работает нормально. На страницу аренды они попадают через контроллер аренды, который принимает параметры и показывает правильную информацию. Находясь на отдельной странице проката, они могут еще немного сузить круг, если захотят. Спальни, даты и гости — все это фильтруемые параметры на этой странице (как и на странице аренды). Проблема заключается в том, что при попытке отправить форму я не могу понять, как вернуть ее контроллеру аренды со значениями формы при использовании слага, созданного на странице блейда.

Вот как это выглядит:

{!! Form::open(['action' => route('rental/'{{$rental->slug}}, 'method' => 'GET', 'id' => 'rentalform']) !!}

Часть рассуждений здесь заключается в том, что мне нужно поддерживать параметры domain.com/rental/rental-slug?params для маркетологов.


person Webtect    schedule 05.11.2018    source источник


Ответы (1)


Измените 'action' на 'url':

{!! Form::open(['url' => "rental/{$rental->slug}", 'method' => 'GET', 'id' => 'rentalform']) !!}

В конструкторах форм laravelcollective/html ключ action в Form::open ожидает метод контроллера в форме 'Controller@method', а не URL.

https://laravelcollective.com/docs/5.4/html#opening-a-form

person Travis Britz    schedule 06.11.2018