找回密码
 加入怎通
查看: 188|回复: 0

「ThinkPHP5开发连载90」tp5路由-路由到类的方法/重定向地址(thinkphp5路由原理)

[复制链接]
我来看看 发表于 2023-03-14 14:44:30 | 显示全部楼层 |阅读模式
0 k9 C( R/ ]. T+ c- q' e' D: ~

上一篇文章讲解“路由 - 路由到模块/控制器/操作/操作方法”,本篇文章讲解“路由 - 路由到类的方法/重定向地址”。路由到类的方法路由到类的方法:

& e$ m3 H. O! s5 w8 B* X/ g

这种方式更进一步,可以支持执行任何类的方法,而不仅仅是执行控制器的操作方法。1)动态方法①在Index控制器中,新建classFun方法

' P8 [& T. N* b

②设置classFun方法的路由

1 t3 ~" n3 Q: a* h) V. }

预览:

0 ?7 a/ s0 `, ^/ `/ f6 F" y$ [

注意:1. Index控制器的命名空间为\app\index\controller,加上类名Index与方法名classFun,形成路由到类的方法的路由2)静态方法①修改Index控制器下的classFun方法的类型,改为静态方法。

+ f( |0 D; Q1 a/ u, w& G5 E

②修改classFun方法的路由,改为静态方法

6 X6 {: a$ @# H3 S6 u! L7 H6 w

预览:

, x' x: @! r4 u0 ?8 S

注意:1. 支持传入额外的参数作为方法的参数调用(用于参数绑定),但经测试无效,接收不到额外的参数(V5.1.12)传入额外参数格式:Route::get(class/:id,\app\index\controller\Index::classFun?flg=7)

' e3 V2 [0 N4 o/ P9 X6 d2 L; u

路由到重定向地址重定向的外部地址必须以“/”或者http开头的地址。如果路由地址以“/”或者“http”开头则会认为是一个重定向地址或者外部地址。例如:

6 A$ ?$ ^: K9 j" r5 Y! L- E: q @

虽然都是路由到同一个地址,但是前者采用的是301重定向的方式路由跳转,这种方式的好处是URL可以比较随意(包括可以在URL里面传入更多的非标准格式的参数),而后者只是支持模块和操作地址1)重定向路由(“/”方式)。

% Y5 J7 D' ]7 F) e5 j8 g! n

①在Index控制器中,新建rectFun方法

+ e2 |8 }3 ^# f, M

②设置rectFun方法的路由非重定向路由设置:

: l% K- V' P$ k# w

预览:

/ @$ x9 D1 u, w, R2 ]( N2 U

重定向路由:

1 [ t! b6 W7 Y* x7 X! ^

预览:

% F: @# z+ D4 T& e' }

访问路由时,自动跳转到后边的路由地址注意:1. 以上的重定向路由使用的是“/”,跳转时,会直接使用域名+跳转地址访问,由于此时没设置虚拟域名,因此需要加上项目目录等路径2. 在非重定向路由中,传参不需要在路由地址中体现,但在重定向路由中,需要将参数体现,并且需要加上参数名,即不设置路由时怎么访问,就怎么设置:。

' M, J& g& H) N+ o% t o

Route::rule(rect2/:id,/tp5_1/public/index/index/rectFun/id/:id);3. 路由地址采用重定向地址的话,如果要引用动态变量,直接使用动态变量即可。

7 R2 ~' T/ }; t' _5 I$ Z

2)重定向路由(“http”方式)采用重定向到外部地址通常对网站改版后的URL迁移过程非常有用,例如:

. _+ n2 y, E! a# `4 W P0 c

访问路由“baidu”直接跳转到百度页面。3)重定向状态码路由重定向默认使用301状态码,可以使用status方法单独设置。

9 a; H0 u7 ^! j( s8 u$ M

4)redirect方法重定向V5.1.3+版本开始,可以直接使用redirect方法注册一个重定向路由

8 Q9 b" }/ x2 Z* d

ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员

" M5 Q( e3 \: C1 N8 o# h [. ^

关注卓象程序员,定期发布技术文章下一篇讲解“路由 - 闭包支持”

' ]& r. x: U2 k0 T5 z! I , b8 i) l. c4 ~ 7 J- S/ Z; q. P 1 v |" Q! y$ v* f8 X- P5 M; H6 h ( ^- O9 v/ N" L7 C* l
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-4-4 11:34 , Processed in 0.048032 second(s), 23 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表