Yii中CreateUrl的使用总结
在Yii中经常要生成URL,不管是为了自动跳转还是仅仅是一个链接。下面对Yii中的URL生成做了一个总结。
提示:以下controllerX代表控制器X,actionX代表方法X。
在Controller::action中,我们要输出一个链接,可以这样做:
$this->createUrl(‘actionName’, array(‘params01′=>’value01′, ‘params02′=>’value02′) );
//Controller::createUrl($route,$params=array(),$ampersand=’&’)
第一个参数是一个字符串,值为路由名。比如action01、controller01/action01等格式。 第二个参数是一个数组,值为所有参数的key=>value对。 第三个参数是URL中每对参数之间的分隔符,一般默认为&不做修改。
假设我们在Controller01::action01中,想要生成指向action02的URL,可以这样做:
$this->createUrl(‘action02′ );
假设我们在Controller01::action01中,想要生成指向controller02::action02的URL,可以这样做:
$this->createUrl(‘action02/action02′ );
若action02是默认action,比如index,那么可省略,但最后的斜杠不可省略,即:
$this->createUrl(‘action02/’ );
斜杠放在最前面即不管代码存在于哪个module下或者哪个controller下,都从整个网站的最顶成生成URL。假设我们的代码存在于user模块的password控制器的reset方法下,下面的代码将会生成不同的URL:
$this->createUrl(‘/abc’); //生成 /abc
$this->createUrl(‘/abc/efg’); //生成 /abc/efg
$this->createUrl(‘abc’); //生成 /user/password/abc
$this->createUrl(‘abc/’); //生成 /user/abc
$this->createUrl(‘abc/efg’); //生成 /user/abc/efg
在layout中,由于$this就是所属的控制器,所以与上面相同。
使用Yii::app()->getController()->createUrl(),来生成URL与上面相同。
使用Yii::app()->createUrl(),这时候路由名就不会自动增加当前Module名和当前Controller名,其他的同上。
在redirect时,有时候我们需要进行用户的转向,比如登录成功就转向到用户信息界面,可以这样做:
$this->redirect(array(‘index’, ‘params01′=>’value01′, ‘params02′=>’value02′));
//redirect($url,$terminate=true,$statusCode=302)
redirect方法接受的第一个参数是一个数组,数组的第一个值就是路由名,剩下的就是所有的参数值。上面的转向URL相当于直接使用下面代码生成的URL:
$this->createUrl(‘index’, array(‘params01′=>’value01′, ‘params02′=>’value02′) );
可以看出,$this->createUrl第三个参数在redirect中是无法设置的。
而redirect方法的第二个参数$terminate表示是否执行时就终结代码的运行并立即转向,一般保持默认。
第三个参数$statusCode表示转向的时候给浏览器发送的状态代码,一般保持默认,具体的状态代码表示的意思可以Google一下“网页状态码”。
最底层:
上面所有的生成URL的方式都最终转到了下面的代码:
UrlManage::createUrl($route,$params,$ampersand);
UrlManage::createUrl($route,$params,$ampersand);
它与Yii::app()->createUrl()唯一的不同点是后者将$route进行了整理:trim($route,’/’)
Yii中CreateUrl的使用总结的更多相关文章
- 在Yii用createUrl中明明白白生成网址
在Yii中经常要生成URL,不管是为了自动跳转还是仅仅是一个链接.下面对Yii中的URL生成做了一个总结.提示:以下controllerX代表控制器X,actionX代表方法X.在Controller ...
- Yii url createUrl redirect相关
一篇文章: 在yii中明明白白生成网址: 在Yii中经常要生成URL,不管是为了自动跳转还是仅仅是一个链接.下面对Yii中的URL生成做了一个总结.提示:以下controllerX代表控制器X,act ...
- Yii中的错误及异常处理
Yii中的错误及异常处理 Yii已经默认已经在CApplication上实现了异常和错误的接管,这是通过php的set_exception_handler, set_error_handler实现的. ...
- yii 中引入js 和css 的方式
在yii中 我们需要引入css 和 js 的时候,yii 自身有需要的类. 当我在views 视图层中引入css 和 js , <?php Yii::app()->clientScript ...
- 在yii中使用分页
yii中使用分页很方便,如下两种方法: 在控制器中: 1. $criteria = new CDbCriteria(); //new cdbcriteria数据库$criteria->id = ...
- 在yii中使用gearman
最近项目需要将利用gearman进行任务调度,目前所用框架为yii,在部署好gearman后,试图在yii中调用gearman,一直报错: 提示reverse函数没有定义,明明已经定义了啊!可能是当时 ...
- yii中第三方库
yii中存在一些路径别名:ext:表示包含了所有第三方扩展的目录 参考:http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.namespac ...
- 在YII中使用Redis等缓存
Yii AR 单行数据-自动缓存机制 | LOCKPHP Yii AR 单行数据-自动LOG机制 CActiveRecordBehavior进阶 | LOCKPHP 缓存 - 权威指南 - Yii F ...
- yii中的自定义组件
yii中的自定义组件(组件就是一些自定义的公用类) 1.在项目目录中的protected/components/Xxxx.php 2.在Xxxx.php中定义一个类,类名必须与文件名相同 3.控制器中 ...
随机推荐
- 2018-11-26-win10-UWP-Controls-by-function
title author date CreateTime categories win10 UWP Controls by function lindexi 2018-11-26 20:0:6 +08 ...
- Maya2014下载安装与激活
目录 1. 更多推荐 2. 下载地址 2.1. OneDrive 2.2. 其他下载地址 3. 激活步骤 1. 更多推荐 其他Maya版本的下载与激活:https://www.cnblogs.com/ ...
- 【ElicitSearch】启动流程
一.集群启动流程 1.选举主节点 许多节点启动,集群干的第一件事儿就是选主,之后的的流程由主节点触发. 先确定唯一的.大家公认的主节点:再想办法把最新的及其原数据复制到选举的主节点上. 选主是对Bul ...
- maven 几个命令的用法
进入到项目目 前 cd E:\workspace\foen_api(如切换不了目录) 直接E:\workspace\foen_api mvn clean 清理 mvn install 安装 mvn t ...
- Access分页语句
一.双TOP法高效率的Access分页的SQL语句,语法格式: SELECT * FROM (SELECT TOP "&pagesize&" * FROM (SEL ...
- linux nginx+php源码安装
PHP安装 1)下载 wget http://cn2.php.net/distributions/php-5.6.30.tar.gz 2)解压 tar –xf php-5.6.30 3)进入目录 cd ...
- 【HDOJ6667】Roundgod and Milk Tea(模拟)
题意:有n个班级,每个班级有a[i]个人,b[i]杯奶茶 每个人至多喝一杯奶茶,且不能喝自己班的 问能喝到奶茶的最多总人数 n<=1e6,a[i],b[i]<=1e9 思路: 做法一: # ...
- 史上最全最实用HBuilder快捷键大全
史上最全最实用HBuilder快捷键大全 一.文件操作二.编辑操作三.插入操作四.转义操作五.选择操作六.跳转操作七.查找操作八.运行九.视图一.文件操作新建菜单: ctrl + N新建: ctrl ...
- php面试专题---17、MySQL的SQL语句编写考点
php面试专题---17.MySQL的SQL语句编写考点 一.总结 一句话总结: 注意:只写精品 1.MySQL的关联UPDATE语句? 关键UPDATE A,B:UPDATE A,B SET A.c ...
- NuGet-Doc:承载自己的 NuGet 源
ylbtech-NuGet-Doc:承载自己的 NuGet 源 1.返回顶部 1. 可能希望将包仅发布到有限受众(例如,组织或工作组),而不是将其公开发布. 此外,一些公司可能希望限制其开发人员可以使 ...