🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 命名路由 ~~~ // 路由命名并获取参数及返回路由地址 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","正则表达式")`,不过暂时不做测试。