Php Laravel 5.1在url中添加查询字符串
我宣布了这条路线:Php Laravel 5.1在url中添加查询字符串,php,laravel,laravel-5.1,laravel-routing,Php,Laravel,Laravel 5.1,Laravel Routing,我宣布了这条路线: Route::get('category/{id}{query}{sortOrder}',['as'=>'sorting','uses'=>'CategoryController@searchByField'])->where(['id'=>'[0-9]+','query'=>'price|recent','sortOrder'=>'asc|desc']); 我想在url中获取此内容: 如何做到这一点 Route::get('catego
Route::get('category/{id}{query}{sortOrder}',['as'=>'sorting','uses'=>'CategoryController@searchByField'])->where(['id'=>'[0-9]+','query'=>'price|recent','sortOrder'=>'asc|desc']);
我想在url中获取此内容:
如何做到这一点
Route::get('category/{id}/{query}/{sortOrder}', [
'as' => 'sorting',
'uses' => 'CategoryController@searchByField'
])->where([
'id' => '[0-9]+',
'query' => 'price|recent',
'sortOrder' => 'asc|desc'
]);
您的url应该如下所示:
http://category/1/recent/asc
。您还需要在public
目录中找到一个合适的文件。如果没有.htaccess
文件,您的url应该是http://category/?q=1/recent/asc
。但是我不确定$\u GET
参数(?q=
)。查询字符串不应该在路由中定义,因为查询字符串不是URI的一部分
要访问查询字符串,应使用请求对象$request->query()
将返回所有查询参数的数组。您也可以使用它返回单个查询参数$request->query('key')
那么你的路线就是这样
Route::get('/category/{id}');
编辑评论:
要生成URL,您仍然可以在Laravel中使用URL生成器,只需提供一个您希望使用URL生成的查询参数数组
url('route', ['query' => 'recent', 'order' => 'desc']);
如果url中有其他参数,则可以使用
request()->fullUrlWithQuery(["sort"=>"desc"])
你误解了我的问题。我明白你的意思。但是我想用查询字符串来实现这一点。那么,我如何从我的视图中调用它呢?您的选项是在控制器中设置变量,并将它们作为正常方式传递到视图中(我建议您这样做,因为您可以验证它们。记住它们是用户输入!)。或者您可以在视图中直接使用facade
Request::query()
问题是我当时正在做这件事。我想现在我不能这么做了。你应该仍然可以这么做,我已经用一个例子更新了我的答案,用query-stringsHmm生成URL,几乎解决了这个问题。现在,唯一的问题是我已经声明了一个路由category/{id}','CategoryController@index“
和{!!链接到动作('CategoryController@customQuery“,null,['id'=>1,'query'=>'price','order'=>'desc])!!
转到索引方法,而不是customQuery方法黄金答案!谢谢
request()->fullUrlWithQuery(["sort"=>"desc"])