|
2 M l; [* E% M1 s" ] 上一篇文章讲解“路由 - 路由到模块/控制器/操作/操作方法”,本篇文章讲解“路由 - 路由到类的方法/重定向地址”。路由到类的方法路由到类的方法: ) J4 j9 [- o* B+ p9 S# D3 R# S$ p
这种方式更进一步,可以支持执行任何类的方法,而不仅仅是执行控制器的操作方法。1)动态方法①在Index控制器中,新建classFun方法
' \ D$ x: [/ ]5 ~" t2 I3 H4 ?9 X ②设置classFun方法的路由
- e% x; P! L+ C( \ 预览: ' w1 u* x F: K+ ], m5 ?8 n: T$ V
注意:1. Index控制器的命名空间为\app\index\controller,加上类名Index与方法名classFun,形成路由到类的方法的路由2)静态方法①修改Index控制器下的classFun方法的类型,改为静态方法。
8 z4 q6 x1 O9 _ ②修改classFun方法的路由,改为静态方法
( ^7 h! K2 O8 }% x6 H. m. t( |/ M 预览: y8 t ^' `; ~/ B! K
注意:1. 支持传入额外的参数作为方法的参数调用(用于参数绑定),但经测试无效,接收不到额外的参数(V5.1.12)传入额外参数格式:Route::get(class/:id,\app\index\controller\Index::classFun?flg=7)
0 O. E6 c0 B# R% x! y9 d 路由到重定向地址重定向的外部地址必须以“/”或者http开头的地址。如果路由地址以“/”或者“http”开头则会认为是一个重定向地址或者外部地址。例如: , h7 `; T8 W7 ]
虽然都是路由到同一个地址,但是前者采用的是301重定向的方式路由跳转,这种方式的好处是URL可以比较随意(包括可以在URL里面传入更多的非标准格式的参数),而后者只是支持模块和操作地址1)重定向路由(“/”方式)。
8 U6 m% `! p/ `/ N: o E ①在Index控制器中,新建rectFun方法 : O+ l6 }' z e/ u: ?; y
②设置rectFun方法的路由非重定向路由设置:
' x/ y+ Z$ f7 b 预览:
/ Q3 K& N$ g' p, q6 K 重定向路由: 2 Z7 A, B7 _! f9 Q
预览: 0 S3 w# S! }( R$ P5 b' Z7 j" l7 T
访问路由时,自动跳转到后边的路由地址注意:1. 以上的重定向路由使用的是“/”,跳转时,会直接使用域名+跳转地址访问,由于此时没设置虚拟域名,因此需要加上项目目录等路径2. 在非重定向路由中,传参不需要在路由地址中体现,但在重定向路由中,需要将参数体现,并且需要加上参数名,即不设置路由时怎么访问,就怎么设置:。
6 G3 Z2 [- {! R1 E8 S A Route::rule(rect2/:id,/tp5_1/public/index/index/rectFun/id/:id);3. 路由地址采用重定向地址的话,如果要引用动态变量,直接使用动态变量即可。
9 f8 C+ P1 m% E: T$ e! s# O 2)重定向路由(“http”方式)采用重定向到外部地址通常对网站改版后的URL迁移过程非常有用,例如:
- s6 K9 B+ I# |; L% a1 ?. e 访问路由“baidu”直接跳转到百度页面。3)重定向状态码路由重定向默认使用301状态码,可以使用status方法单独设置。
* p3 v% o9 A6 ~( B: Q* w0 P 4)redirect方法重定向V5.1.3+版本开始,可以直接使用redirect方法注册一个重定向路由 - o+ [" U) e+ [: z
ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员
/ [2 _; Z0 n A. y2 p 关注卓象程序员,定期发布技术文章下一篇讲解“路由 - 闭包支持” 
! Q8 c, N! R2 T3 X1 ^* K5 H& d
/ \, J! G( B% _' k% l# _- x/ m5 a
6 E/ p' W6 F4 x, f$ C9 k" w% |2 R3 |1 O/ X: N6 |
|