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"])