Laravel 4.2表格SUbmit友好URL

时间:2014-11-15 12:02:38

标签: php forms laravel laravel-4 friendly-url

我在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中的某些代码?

或在路由器中。

有人可以帮我吗?

提前感谢您的帮助。

1 个答案:

答案 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>