我在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()}}
当我点击提交按钮时,我得到了像
这样的网址http://localhost/car/public/search?topic=dfg
但我希望有一个像
这样的网址http://localhost/car/public/search/dfg
我是否需要更改Form中的某些代码?
或在路由器中。
有人可以帮我吗?
提前感谢您的帮助。
答案 0 :(得分:2)
如果您不想在评论中指向@lukasgeiter进行服务器重定向,则需要JavaScript。您还需要为该特定搜索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>