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.控制器中 ...
随机推荐
- Linux性能优化从入门到实战:16 文件系统篇:总结磁盘I/O指标/工具、问题定位和调优
(1)磁盘 I/O 性能指标 文件系统和磁盘 I/O 指标对应的工具 文件系统和磁盘 I/O 工具对应的指标 (2)磁盘 I/O 问题定位分析思路 (3)I/O 性能优化思路 Step 1:首先采用 ...
- Linux性能优化从入门到实战:12 内存篇:Swap 基础
内存资源紧张时,可能导致的结果 (1)OOM 杀死大内存CPU利用率又低的进程(系统内存耗尽的情况下才生效:OOM 触发的时机是基于虚拟内存,即进程在申请内存时,如果申请的虚拟内存加上服务器实际已用的 ...
- javaweb各种框架组合案例(六):springboot+spring data jpa(hibernate)+restful
一.介绍 1.springboot是spring项目的总结+整合 当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间 ...
- Spring Cloud Stream监听已存在的Queues/Exchanges
环境准备 rabbitmq已运行,端口5672,控制台web端口15672,用户名密码guest/guest 引入spring cloud stream依赖 compile('org.springfr ...
- [SDOI2011]消防(贪心,图论,树的直径)
[SDOI2011]消防 题目描述 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超越宇宙的热情, ...
- python3 使用 django-xadmin 遇到的许多坑
几乎所有公司项目都是python2的, xadmin对Python2 很友好,对Python3 很不友好, 所以在Python3 环境下使用xadmin遇到了许多意想不到的坑,在这里记录并分享一下: ...
- Test 6.29 T2 染色
问题描述 于是 CJK 轻轻松松就切了第一题."好,那么来看看第二题吧." JesseLiu 大手一挥,CJK 眼前立刻出现了一棵有 n 个节点的树."现在,你将要为这颗 ...
- 基于mpvue搭建小程序项目框架
简介: mpvue框架对于从没有接触过小程序又要尝试小程序开发的人员来说,无疑是目前最好的选择.mpvue从底层支持 Vue.js 语法和构建工具体系,同时再结合相关UI组件库,便可以高效的实现小程序 ...
- apache如何发布地图服务
svg jpg Tomcat和apache是什么关系呢?:https://www.cnblogs.com/zangdalei/p/8057325.html geoserver又是怎么来的呢? Tomc ...
- JavaScript面向对象初步认识
一.面向对象初步认识 1.什么是对象? 一句话解释: 万物皆对象 对象是有属性的:用{ }来写入! 2.对象的应用(接口) json 接口简单的说就是后台提供给前端提供数据的,让我们进行渲染! 请求接 ...