## 命名路由
~~~
// 路由命名并获取参数及返回路由地址
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","正则表达式")`,不过暂时不做测试。