首页 > 程序开发 > Web开发 > PHP教程 > PHP框架专栏 > Yii > 正文
The Yii Cookbook 中文索引
2016-01-06       个评论      
收藏    我要投稿

给每页增加登录框使用?CClipWidget的高级CTabView

自动时间戳行为

创建依赖关系的下拉框

Eclipse?PDT–代码提示,应用和其他好处

启用Gzip

第一个Yii应用:CTabView

如何访问一个在模块内部访问其自身的组件

如何给记录通过行为添加名字空间

如何向Yii::app()->user添加更多的信息

如何在记录模型中自动时间戳

如何通过Yii连接Twitter

如何创建面包屑元件

如何创建/保存更多的模型输入并且使用jQuery重复它们

如何自定义验证规则的错误信息

如何自定义Yii核心消息

如何在Yii中显示静态页面

如何扩展Yii?shell?commands

如何通过下拉框筛选数据

如何生成给一个应用生成网页feed

如何隐藏index.php

如何在一个应用中实现多个页面布局

如何记录ActiveRecords的改变

如何在日志中记录内容信息(session?id,?user…)

如何使用ActiveRecord自定义表前缀

如何使用碎片缓存

如何设置FCKeditor

如何在WAMP(XP/Vista)中设置yiic

如何通过model上传文件

如何使用单独的表单向两个或以上的models收集数据

如何使用Highslide实现图天弹出效果

如何在完全WISIWYG编辑器中使用markItUp!

如何使用嵌套DB?transations

如何使用动画消息(flash?messages)

集成其他框架

在不同的模块中管理应用设置

按照前台和后台的方式组织应用程序目录

PHP编码规范(非官方)

问:我的yiic工具不能运行model和crud命令,为什么?

问:为什么有些支付不能正确显示(如何设置Unicode)

设置和管理多语言(i18n)

使用函数简名以减少输入

使用CAutoComplete来显示一个值并且提交另一个

在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);

它与Yii::app()->createUrl()唯一的不同点是后者将$route进行了整理:trim($route,’/’)

当你需要用到URL的时候,又一时不清楚参数的格式,最好的方式就是看看这个方法的代码,然后你就会恍然大悟。这也是学习和实践PHP时的好习惯。

点击复制链接 与好友分享!回本站首页
相关TAG标签 中文 索引
上一篇:Yii中使用RBAC完全指南
下一篇:Yii框架中使用CLinkPager实现分页功能
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站