【问题标题】:Laravel 4.2 Form SUbmit Friendly URLLaravel 4.2 表单提交友好 URL
【发布时间】:2015-01-12 18:24:09
【问题描述】:

我在 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

但我想要一个类似的网址

http://localhost/car/public/search/dfg

我需要更改表单中的一些代码吗?

或者在路由器中。

谁能帮帮我?

提前感谢您的帮助。

【问题讨论】:

  • 你可能必须使用 javascript
  • 为什么?我可以在 Codeigniter 中拥有一个搜索 URL,例如 localhost/search/topic_name 所以,我可以在这里拥有它。一定有办法
  • 问题不在于路由。它是形式。您不能使用动态表单数据(如主题)在没有 javascript 的情况下生成 URL。或者,您可以将服务器从 search?topic=dfg 重定向到 search/dfg

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


【解决方案1】:

如果您不想像 @lukasgeiter 在 cmets 中指出的那样进行服务器重定向,则确实需要 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    相关资源
    最近更新 更多