#yii框架学习之路#yii CUrlManager

Package system.web 

Since 1.0
 
Source Code framework/web/CUrlManager.php 

[ 说明 ]

CUrlManager 负责管理 Yii 应用程序的 URL。

它提供 URL 的构建( createUrl() )和解析( parseUrl() )功能。

通过设置 urlFormat 属性,CUrlManager 管理的 URL 可以是以下两种格式之一:

  'path' 格式: /path/to/EntryScript.php/name1/value1/name2/value2...
  'get'  格式: /path/to/EntryScript.php?name1=value1&name2=value2...

当使用 'path' 格式时,CUrlManager 使用一组规则以实现:

  解析 URL 地址为路由为 ('ControllerID/ActionID') 格式并获取参数
  基于给定的路由规则和参数创建 URL
  
规则由路由和正则构成。CUrlManager 使用后者来决定使用何种规则来解析和创建 URL。模式用来匹配 URL 的路径信息部分。它可以使用形如 '<ParamName:RegExp>' 的格式来包含指定的参数。

解析 URL 时,匹配的规则将从路径信息中提取出指定的参数并且将这些数值赋给 $_GET 变量;当创建 URL 时,匹配的规则将从 $_GET 变量中收集参数并将他们放到 URL 的路径信息中。

如果正则以 '/*' 结尾,意味着附加的 GET 参数可能会被添加到 URL 的路径信息中;否则,GET 参数只能出现在路径信息部分。

要指定 URL 规则,设定规则属性数组( pattern => route ), 例如:

?
1
2
3
4
array (
     'articles' => 'article/list' ,
     'article/<id:\d+>/*' => 'article/read' ,
)

  
上面指定了两条规则:

  第一条规则指的是,如果访问者请求 '/path/to/index.php/articles' 这个地址,那么将视为请求 '/path/to/index.php/article/list';反过来, 创建URL时也适用。
  第二条规则包含了一个通过 '<ParamName:RegExp>' 语法指定的参数 'id', 它的意思是,当访问者请求 '/path/to/index.php/article/13' 这个地址,那么将视为请求 '/path/to/index.php/article/read?id=13' 这个地址;反过来, 创建URL时也适用。
  
从版本 1.0.5 起,路由部分可以包含正则部门的引用。这允许一个规则根据匹配条件的不用,适用不同的路由。例如,

?
1
2
3
4
5
array (
     '<_c:(post|comment)>/<id:\d+>/<_a:(create|update|delete)&gt;' => '<_c>/<_a>' ,
     '<_c:(post|comment)>/<id:\d+>' => '<_a>/view' ,
     '<_c:(post|comment)>s/*' => '<_a>/list' ,
)


上面我们在路由部分使用了两个指定的参数 '<_a>' 和 '<_c>','<_c>' 参数匹配 'post' 或者 'comment', 而 '<_a>' 参数匹配 action Id.

和标准规则一样,这些规则可以被用来解析和生成 URL。例如,使用上面的规则,URL '/index.php/post/123/create' 将被解析为 'post/create' 路由和值为 123 的 'id' GET 参数。给定路由参数 'post/list' 和值为 2 的 'page' 参数,我们将得到 '/index.php/posts/page/2' 这个 URL。

从 1.0.11 版本开始,规则中还可以包含主机名来解析和创建 URL。有人可能希望将主机名转化为 GET 参数,例如:http://admin.example.com/en/profile 可以解析称 GET 参数  user=admin 与 lang=en;另一方面,规则也可以用来生成包含参数化的主机名的 URL。

想要使用参数化的主机名,仅仅需要使用主机信息声明 URL 规则,例如:

?
1
2
3
array (
     'http://<user:\w+>.example.com/<lang:\w+>/profile' => 'user/profile' ,
)


CUrlManager 是一个默认的应用程序组件,可以通过 CWebApplication::getUrlManager() 方法进行访问。


原文地址:http://www.yiibase.com/yii/113.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值