前言
路由规则的原理就是根据请求的参数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使用驼峰命名的形式访问控制器
官方文档