У меня есть форма в Laravel 4.2
{{Form::open(array('url'=>'search', 'method'=>'get', 'class'=>'navbar-form navbar-left' ,'role'=>'search'))}}
<div class="form-group ">
<input list="browsers" name="topic" class="form-control " placeholder="Search">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
</div>
<button class="gray-button"><span>Search</span></button>
{{Form::close()}}
Когда я нажимаю кнопку «Отправить», я получаю URL
http://localhost/car/public/search?topic=dfg
Но я хочу, чтобы URL-адрес, как
http://localhost/car/public/search/dfg
Нужно ли менять код в форме?
Или в роутере.
Кто-нибудь может мне помочь?
Заранее спасибо за помощь.
Вам нужен JavaScript, если вы не хотите выполнять перенаправление на сервер, как указал @lukasgeiter в комментариях. Вам также необходимо настроить маршрут для этого конкретного поискового URL. Маршрут должен выглядеть примерно так с использованием закрытия маршрута:
Route::get('search/{topic}', function ($topic)
{
// code goes here
});
Для клиентской стороны вам нужно остановить отправку формы и перейти на созданный вручную URL при отправке формы. Таким образом, вы могли бы иметь что-то вроде этого:
{{Form::open(array('url'=>'search', 'method'=>'get', 'id' => 'searchForm', 'class'=>'navbar-form navbar-left' ,'role'=>'search'))}}
<div class="form-group ">
<input list="browsers" name="topic" class="form-control " placeholder="Search">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
</div>
<button class="gray-button"><span>Search</span></button>
{{Form::close()}}
<script>
document.getElementById('searchForm').onsubmit = function (event)
{
// Prevent the form from submitting
event.preventDefault();
// Build the url using the form action and the topic value
var topic = document.querySelectorAll('input[name="topic"]')[0];
window.location.href = this.action + '/' + encodeURIComponent(topic.value);
};
</script>
Других решений пока нет …