#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
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 起,路由部分可以包含正则部门的引用。这允许一个规则根据匹配条件的不用,适用不同的路由。例如,
?
和标准规则一样,这些规则可以被用来解析和生成 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 规则,例如:
?
原文地址:http://www.yiibase.com/yii/113.html
相关文章推荐
- mysql数据库 thinkphp连贯操作where条件的判断不正确的问题
- php 无线分类tree
- soap header身份认证 不带ns标签
- PHP自带ZIP压缩、解压缩类ZipArchiv介绍及使用
- 解决 php-cgi 启动时提示缺少 msvcr110.dll 的问题
- OLTP和OLAP概况
- php单引号和双引号的区别与用法
- 创建yii 项目
- php中echo、print、print_r区别
- php中this、self、parent解析
- php中this、self、parent解析
- thinkphp RBAC使用说明BY holy(写的很清晰)
- PHP "Easter Egg"
- php上传图片 继上一篇上传失败原因
- EditPlus 3设置字体大小(附图)
- mfc 利用CXTPChartControl画柱状图,响应柱状图单击事件
- 用zf.bat创建zendframework项目时,出现的pdo错误
- Yiibooster popover 鼠标置于popover上 不隐藏
- php-fpm监控监本
- ThinkPHP3.1快速入门(16)安全