繁体   English   中英

如何在 laravel 5.4 中获得干净的 GET url 进行搜索

[英]How to get clean GET urls for search in laravel 5.4

目前我正在 Laravel 中开发一个项目搜索功能,并坚持在 没有任何类型的 JS 的情况下 获得干净的 GET url JS 也可以工作

就像我搜索表单时将我重定向到

http://jobs.localhost/search?q=hello

但相反,我想要这个

http://jobs.localhost/search/hello

我的 web.php 是:

Route::get('search', ['as' => 'search', 'uses' => 'SearchController@search']);

形式为:

<form class="form-inline" method="GET" action="{{ action('SearchController@search') }}" id="search-form">
    <div class="col-md-5 col-sm-5 col-xs-12 nopadding">
        <div class="form-group">

            <input type="text" class="form-control" id="form-q" name="q" placeholder="Search a Job">
            <i class="icon-magnifying-glass"></i>
        </div>
    </div>

    <div class="col-md-2 col-sm-2 col-xs-12 nopadding">
        <div class="form-group form-action">
            <button type="submit" class="btn btn-default btn-search-submit">Search <i class="fa fa-angle-right"></i> </button>
        </div>
    </div>
</form>

目前在控制器中我只是打印值:

 public function search(Request $request)
 {
  echo $request['q'];  
 }

我已经检查了 JS 或 POST 的多个解决方案,但没有一个对我有用,这是我正在寻找的最终输出: http://jobs.localhost/search/hello

谢谢。

你想要的是路由参数。 您可以在此处找到更多信息。

您可以(并且将会)遇到的一个问题是表单的路由是在 php(服务器端)中确定的,但搜索参数被确定为输入。 如果您不想要任何 javascript,我相信如果不重新路由,这是不可能的。

将路线更改为:

Route::get('search/{search}', ['as' => 'search', 'uses' => 'SearchController@search']);

和控制器:

public function search(Request $request, $search)
{
    echo $search;  
}

然后你就可以用 jQuery 做这样的事情:

$('#search-form').on('submit', function(e) {
    e.preventDefault();
    var search = $('#form-q').val();
    window.location('/search/' + search);
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM