Thinkphp中的路由

Thinkphp是php的框架之一,目前也比较火热!

路由(route)是Thinkphp框架中的一个知识点,它的作用是可以让url网址访问变的简洁,规范。同时也可以将较长的ulr网址变得更加简短,方便记忆和访问!

开启路由的方式:

定义路由的方式:

在此目录文件下定义路由,以及路由所对应的位置,比如:

rule():是指定路由名对应路由位置的一种方式

1.普通路由:

当路由为空时,会调用Address控制器下的sex方法!

 

Route::rule('路由名','路由对应的位置');

示例 : Route::rule('as','Address/sex');

定义了该路由后,当用户在网址处输入as时,将会自动调用Address控制器下的sex方法!

2.传参路由:

Route::rule('路由名/:name','控制器/方法名');

当Address控制器下的name方法中需要传参时,我们可以在定义路由时给其加上:name,这里定义的:name值,必须跟方法中的参数名对应,并且在网址处调用时给其传递name值,该值会被替换方法中的$name变量!

比如:

1.定义路由:

2.调用路由:

 路由中的请求类型一共有六种:

get:仅支持get类型                                         对应的快捷方式:get

post:仅支持post类型                                     对应的快捷方式:post

put:仅支持put类型                                        对应的快捷方式:put

delete:仅支持delete类型                               对应的快捷方式:delete

patch:仅支持patch类型                                 对应的快捷方式:patch

*:支持任何类型                                              对应的快捷方式:any

路由注册方法的用法为:

使用示例如下:

其中的<id> 等于:id,都是同样的效果

rule():中的第三个参数为请求该路由的类型为POST,不指定的话默认为任何请求类型都有效

同时也可以定义多种请求方式,要么为GET或为POST

 

静态地址跟动态地址的结合:

当控制器下的方法中有多个参数需要传递值时,可以通过定义路由时给其用同样的方式定义多个动态值,然后在url处调用时,只需传递对应的参数即可

最终效果:

 

完全匹配:$

完全匹配的区别在于路由的后面是否加上$

Route::rule('Ax/:id','Address/xx');  当在url中网址中调用Ax/1/wxh,也能执行

Route::rule('Ax/:id$','Address/xx');    当在url网址中调用Ax/1/wxh,不能执行,因为加了$

$符是正则表达式中的一种规则,它规定了$符后面不能在跟任何东西

 

额外传参:->append(['']):

作用是:在定义路由时,同时定义好参数,在url网址处调用路由时,可传递一个假参数,这样能够起到一定的安全防护

示例:

定义xx方法中的id为5,在调用路由时传参会被转换

好像必须传递一个值,但它默认是用append里定义的那个值

 

闭包路由:

当调用Ax路由时会执行该函数!

 

->pattern(['']):的使用

pattern的作用是可以限制某个变量的数据类型

示例如下:

其中的\d+是正则表达式中的数字型,规定id的类型为数字型

该定义方式为局部定义,仅在当前路由有效:

表示Ax/:id对应的是Address控制器下的xx方法,传id参数时,只能传数字类型

 

全局变量类型定义方式:

设置全局变量规则,全部路由有效:

pattern('id' => '\d+'): \d是正则中的表达式,表示id的数据类型必须为数字

 

 动态路由:

顾名思义,动态路由的意思是路由名跟对应的路由位置都是动态的,比如:

该路由中对应的控制器位置也是动态的,其中的name是跟随路由名中的name对应的,也就是说在url网址中给name传的啥值,它就会跟控制器名进行拼接,最后去找对应的控制器及方法

比如说:

它就会去找helloWorld控制器中的hello方法

 

多级控制器的路由定义方式:

bd/:id对应的是group文件夹下的Blog控制器中的details方法

 

路由中的重定向: redirect()

当在url网址处输入XG时,会跳到参数二中的网址去

 

路由参数:

-> ext('html'):规定后缀名必须为html

其他的用法都差不多,相信聪明的你们已经会了

 

 

路由的分组:

所谓的路由分组就是将多个路由放入一个组内方便进行管理!

如上的意思是定义一个group组来管理两个分别对应不同位置的路由,其中Ax代表路由的名,在url网处输入Ax/id值时,它会自动对应Address/xx下的方法

 

如下给多个路由进行路由参数的话,可以将他们放入一个组中,只需在组后添加路由参数即可,

无需在给每个路由一一填上路由参数

 

全局MISS路由:

MISS路由的意思是如当调用一个不存在的路由时,会自动调用如下闭包

 

以上便是我总结的关于Thinkphp6中路由的知识点,希望能帮助大家!

 

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值