如何在 laravel 5.4 中获取用于搜索的干净 GET 网址
How to get clean GET urls for search in laravel 5.4
目前我正在 Laravel 开发一个项目搜索功能,并一直致力于获得干净的 GET url 没有任何类型的 JS 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 的多个解决方案,但 none 对我有用这是我正在寻找的最终输出:http://jobs.localhost/search/hello
谢谢。
你要的是路由参数。您可以找到更多信息 here.
您可以(并且将会)运行 遇到的一个问题是,表单的路由是在 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);
})
目前我正在 Laravel 开发一个项目搜索功能,并一直致力于获得干净的 GET url 没有任何类型的 JS 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 的多个解决方案,但 none 对我有用这是我正在寻找的最终输出:http://jobs.localhost/search/hello
谢谢。
你要的是路由参数。您可以找到更多信息 here.
您可以(并且将会)运行 遇到的一个问题是,表单的路由是在 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);
})