前言
路由规则的原理就是根据请求的参数A --->
找到要执行的B,项目中生成url刚好是相反的方向 B --->
A 。原理很简单,yii的路由通过正则的方式进行匹配和映射。我们的重点看一下使用
urlManager
urlManager 作为一个url管理者,所有的路由规则 UrlRule
通过它来管理
在匹配路由的时候会根据配置的先后顺序从上到下进行对 UrlRule
进行匹配,匹配到的直接返回
动态的添加路由规则
添加规则,模块在bootstrap启动的会后有的需要注册自己规则的通过这个添加,如gii、debug模块就用到
路由规则 UrlRule
将配置的路由规则进行拆解创建成 UrlRule 对象,用来进行后续的解析和生成url
规则举例
直接映射
|
|
当访问
/index
时实际访问的是/ding/bunao
左边正则匹配型
|
|
当访问
/test/10
的时候实际访问的是/test/bunao?id=10
|
|
当访问
/test/1000/ding
的时候实际访问的是/test/bunao?year=1000&category=ding
|
|
当访问
/test/100/bunao
的时候实际访问的是/test/bunao?id=100
通常会写成下面的形式,方便阅读
其他实例
当访问
/post/100
的时候实际访问的是/post/view?id=100
带有默认值的
|
|
当请求
/posts
时实际请求的是/post/index?page=1&tag=''
限制请求方式的
|
|
表示请求
/post/100
如果要访问到/post/create?id=100
必须是POST
请求
|
|
表示允许
post
和pub
方式请求。多个用,
隔开
域名匹配
一个项目配置了好几个域名,根据域名来控制访问,比如说pc、mobile、api三个用不同的域名
|
|
总结
- 如果左边有
<>
而右边没有对应的,则<>
中定义的匹配到的作为$_GET
的一组值。 - 如果右边有和左边对应的(值相等的)
<>
,表示左边匹配到的替换到右边就行了 <>
中的:\xx
定义的是正则匹配的规则,如::\d+
匹配任意个数字,:\d{4}
只能匹配4位的数值,:(test|comment)
只能匹配 test 或 comment 中的其中一个
action支持驼峰形式请求
增加支持驼峰形式请求
|
|
需要驼峰的控制器继承此类就行了
参考 Yii2使用驼峰命名的形式访问控制器
官方文档