我宣布了这条路线:
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?field=recent&order=desc中得到这个
怎么做到这一点?
不应在路由中定义查询字符串,因为查询字符串不是URI的一部分.
要访问查询字符串,您应该使用请求对象. $request-> query()将返回所有查询参数的数组.您也可以使用它来返回单个查询参数$request-> query(‘key’)
class MyController extends Controller { public function getAction(\Illuminate\Http\Request $request) { dd($request->query()); } }
那么您的路线就是这样
Route::get('/category/{id}');
编辑评论:
要生成URL,您仍然可以使用Laravel中的URL生成器,只提供您希望使用URL生成的查询参数的数组.
url('route',['query' => 'recent','order' => 'desc']);