Laravel 5.1 在 url 中添加查询字符串
Laravel 5.1 add Query strings in 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?field=recent&order=desc
如何做到这一点?
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
文件。如果没有 .htaccess
文件,您的 url 应该看起来像 http://category/?q=1/recent/asc
。但是我不确定 $_GET
参数 (?q=
).
不应在您的路由中定义查询字符串,因为查询字符串不是 URI 的一部分。
要访问查询字符串,您应该使用请求对象。 $request->query()
将 return 所有查询参数的数组。您也可以将其用于 return 单个查询参数 $request->query('key')
class MyController extends Controller
{
public function getAction(\Illuminate\Http\Request $request)
{
dd($request->query());
}
}
你的路线就是这样
Route::get('/category/{id}');
编辑评论:
要生成 URL,您仍然可以在 Laravel 中使用 URL 生成器,只需提供您希望使用 [=28= 生成的查询参数数组].
url('route', ['query' => 'recent', 'order' => 'desc']);
如果url中有其他参数可以使用;
request()->fullUrlWithQuery(["sort"=>"desc"])
我已经声明了这条路线:
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 如何做到这一点?
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
文件。如果没有 .htaccess
文件,您的 url 应该看起来像 http://category/?q=1/recent/asc
。但是我不确定 $_GET
参数 (?q=
).
不应在您的路由中定义查询字符串,因为查询字符串不是 URI 的一部分。
要访问查询字符串,您应该使用请求对象。 $request->query()
将 return 所有查询参数的数组。您也可以将其用于 return 单个查询参数 $request->query('key')
class MyController extends Controller
{
public function getAction(\Illuminate\Http\Request $request)
{
dd($request->query());
}
}
你的路线就是这样
Route::get('/category/{id}');
编辑评论:
要生成 URL,您仍然可以在 Laravel 中使用 URL 生成器,只需提供您希望使用 [=28= 生成的查询参数数组].
url('route', ['query' => 'recent', 'order' => 'desc']);
如果url中有其他参数可以使用;
request()->fullUrlWithQuery(["sort"=>"desc"])