## 命名路由
~~~
// 路由命名并獲取參數及返回路由地址
Route::get("/no1/test13/id/{id}", ["as" => "no1test13", function($id){
// 生成路由地址, 不設置參數返回路由定義
// 即:http://127.0.0.1/no1/test13/id/%7Bid%7D
$url = route("no1test13", ["id" => $id]);
return "編號:" . $id . " 地址:". $url;
}]);
// 路由重定向
Route::get("/no1/test14", function(){
// 重定向到路由
$rel = redirect()->route("no1test13", ["id" => 1001]);
// 這個跳轉有點問題,特別是用die中斷后能看到效果
die($rel);
});
~~~
基本路由里一般傳遞兩個參數,url 和 callback。
這里如果需要定義路由名稱的話,需要修改第二個參數,將其改為一個數組。
數組第一個參數是鍵值對,key為as,value為路由的名稱。
數組第二個參數變成了之前的callback
千萬記得別將callback寫到數組的外面(特地測試過,報錯)
> route(url, array)
這個函數是根據路由地址及參數生成真實的url,包含hostname
> redirect()
執行跳轉,根據當前的文檔來看,只會在后面追加->route()函數,用于跳轉到指定的路由
## 路由組
~~~
// 路由組
Route::group(["as" => "admin::"], function(){
Route::get("/no1/test15", ["as" => "no1test15", function(){
// 此時路由名稱為 admin::no1test15
// 本想返回路由完整名稱,可是此時還不知道函數名稱
return "你好,我是第15個測試例子";
}]);
});
// 前綴、通過prefix設置前綴
Route::group(["prefix" => "no1"], function(){
// 此時訪問地址應該為 localhost/no1/test16
Route::get("test16", function(){
return "你好,我是第16個測試例子";
});
Route::get("test17/{version?}", function($version = "v1"){
return "你好,我是第17個測試例子 Version:" . $version;
});
// 中間件及命名空間、這里將中間件注釋是因為沒什么中間件可用,會報錯提示找不到這個中間件
Route::group([/*"middleware" => ["foo", "bar"], */"namespace" => "test", "prefix" => "ttt", "as" => "test::"], function(){
Route::get("test18", ["as" => "no1test18", function(){
return "你好,我是第18個測試例子";
}]);
Route::get("test19", function(){
return "你好,我是第19個測試例子". route("test::no1test18");
});
});
});
~~~
路由組可以多層嵌套,但是要記得別搞混淆了前綴和命名空間。
其中路由前綴也可以成url并綁定參數,如`["prefix" => "no1/{mid}"]`
由此又聯想到`Route::group()->where("mid","正則表達式")`,不過暫時不做測試。