webman能否通過設(shè)置來同時支持如下URL的訪問請求
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)象:
一、通過配置路由可以讓manager_user方法獲取到第1個URL中的兩個參數(shù),但此時第2個URL就獲取不到了
二、不配置路由,則第2個URL可以讓manager_user方法正常獲取參數(shù),但第1個又獲取不到了。
問題:怎樣實現(xiàn)二者同時可用?可否修改Request類的all方法來滿足此需求?
優(yōu)雅的解決方案,安裝自動路由插件
composer require webman/auto-route
不優(yōu)雅的解決方案
定義2個路由
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']);
控制器方法里這樣來獲取 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);
}