webman能否通過(guò)設(shè)置來(lái)同時(shí)支持如下URL的訪問(wèn)請(qǐng)求
1、http://localhost/admin/user/manager_user/n/20/m/5000
2、http://localhost/admin/user/manager_user?n=20&m=5000
admin 為應(yīng)用
user 為控制器
manager_user為方法名
n、m為manager_user方法的參數(shù)名
20 、5000分別為參數(shù)n及m的值
現(xiàn)象:
一、通過(guò)配置路由可以讓manager_user方法獲取到第1個(gè)URL中的兩個(gè)參數(shù),但此時(shí)第2個(gè)URL就獲取不到了
二、不配置路由,則第2個(gè)URL可以讓manager_user方法正常獲取參數(shù),但第1個(gè)又獲取不到了。
問(wèn)題:怎樣實(shí)現(xiàn)二者同時(shí)可用?可否修改Request類的all方法來(lái)滿足此需求?
優(yōu)雅的解決方案,安裝自動(dòng)路由插件
composer require webman/auto-route
不優(yōu)雅的解決方案
定義2個(gè)路由
Route::any("/admin/user/manager_user", [app\controller\User::class, 'manager_user']);
Route::any("/admin/user/manager_user/{p1}/{v1}/{p2}/{v2}", [app\controller\User::class, 'manager_user']);
控制器方法里這樣來(lái)獲取 get參數(shù)和路由參數(shù)
public function manager_user(Request $request,$p1="",$v1="",$p2="",$v2=""){
$data=[
"fullUrl"=>$request->fullUrl(),
"get"=>$request->get(),// ?n=10&m=100 的get參數(shù)
"p1"=>$p1,//路由參數(shù)
"v1"=>$v1,//路由參數(shù)
"p2"=>$p2,
"v2"=>$v2,
];
return json($data);
}