您的位置:首页 > 编程语言 > PHP开发

#yii框架学习之路#yii CUrlManager

2013-10-31 08:59 211 查看
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 ), 例如:

?
  
上面指定了两条规则:

  第一条规则指的是,如果访问者请求 '/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 起,路由部分可以包含正则部门的引用。这允许一个规则根据匹配条件的不用,适用不同的路由。例如,

?
上面我们在路由部分使用了两个指定的参数 '<_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 规则,例如:

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

原文地址:http://www.yiibase.com/yii/113.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: