1. Yii Framework] 如何获取当前controller的名称? 
下面语句就可以获取当前控制器的名称了!

  1. Yii::app()->controller->id

2. yii 如何使用第三方插件 
第一,比如说,我们要使用 Zend framework的东西。我们把zend framework解压到 prtected/vendors里面,现在的文件夹为 protected/vendors/Zend/Search/Lucene.php

第二,在controller文件的头部,插入下面代码。 
Yii::import('application.vendors.*'); 
require once('Zend/Search/Lucene.php'); 
上面代码包含了Lucene.php这个类文件。因为我们用到的是相对路径,所以我们需要改变PHP加载文件的路径,Yii::import 一定要在require_once 之前。

第三,一旦我们设置好了,我们就可以在controller里面使用了。比如说 
$lucene=new Zend Search Lucene($pathOfIndex); 
$hits=$lucene->find(strtolower($keyword));

3. yii中如何在查询的时候使用数据库函数 
比如要使用mySQL中的md5函数, 
Test::model()->findAll(new CDbExpression("md5(name) =1"));

4. yii的controller中外挂action 
创建

  1. class UpdateAction extends CAction {
  2. public function run() {
  3. // place the action logic here
  4. }
  5. }

调用

  1. class PostController extends CController {
  2. public function actions() {
  3. return array( 'edit'=>'application.controllers.post.UpdateAction', );
  4. }
  5. }

5. Yii创建widget

  1. class MyWidget extends CWidget {
  2. public function init() {
  3. // this method is called by CController::beginWidget()
  4. }
  5. public function run() {
  6. // this method is called by CController::endWidget()
  7. }
  8. }

通常,widget的视图是是放在components/views里面的,通过CWidget::render()来传递参数的

6. CWidget::init()与CWidget::run()的联系 
要创建一个新的挂件(widget),我们主要是要继承两个方法:CWidget::init()和 CWidget::run(),

CWidget::init 调用是发生在我们使用 $this->beginWidget 将挂件插入到一个view里面, 
CWidget::run 调用是发生在我们使用 $this->endWidget 这个方法的时候。 
如果我们想捕捉和处理两者之间的方法核查办上显示的内容,我们可以在CWidget::init开始输出缓冲,然后在CWidget::run中检索缓冲输出 
并作进一步处理。

7. Yii如何使用theme 
在main.php 里面配置 
return array( 
  'theme'=>'basic', 
  //...... 
); 
要使用theme里面的资源的话,比如说images, js, css, 应该这样, Yii::app()->theme->baseUrl.”/images/FileName.gif” 
Yii::app()->Theme->baseUrl.”/css/default/common.css”

8.Yii 如何在当前页面注册css和js文件 
  $cs=Yii::app()->clientScript; 
  $cs->registerCssFile($cssFile); 
  $cs->registerScriptFile($jsFile);

9.Yii Captcha验证码的使用方法 
假设使用的model名字为Comment 
Model里面

  1. public function rules() {
  2. return array(
  3. ......
  4. array('verifyCode',
  5. 'captcha',
  6. 'on' => 'insert',
  7. 'allowEmpty' => !Yii::app()->user->isGuest || !extension_loaded('gd')),
  8. );
  9. }

View里面 
<form action=”/test/xyz” method=”post”> 
  <input type=”text” name=”comment[verifyCode]”/> 
</form> 
Controller里面 
public function xyz() { 
  $comment = new Comment; 
  $comment->validate('insert'); 
  //因为是insert的时候才会用到captcha,所以要加上参数'insert' 
}

10. 如何调用extension扩展 
Components的方法 
引入以及定义: 
在config.php文件里面

  1. 'components'=>array(
  2. 'xyz'=>array(
  3. 'class'=>'ext.xyz.XyzClass',
  4. 'property1'=>'value1',
  5. 'property2'=>'value2',
  6. ),
  7. // other component configurations
  8. ),

使用方法: 
在任何地方,使用Yii::app()->xyz,就可以直接使用xyz这个component了,而component的加载方式是 lazilycreated的,只要我们不是在preload=array()里面定义,那么就是,当第一次使用的时候,才会实例化的,所以不用担心说把 它放在config.php里面会影响性能。

11. Yii 数据保存时自动插入createTime和updateTime 
Yii 1.1 version之后,可以直接这样:

  1. public function behaviors(){
  2. return array(
  3. 'CTimestampBehavior' => array(
  4. 'class' => 'zii.behaviors.CTimestampBehavior',
  5. 'createAttribute' => 'create_time_attribute',
  6. 'updateAttribute' => 'update_time_attribute',
  7. )
  8. );
  9. }

如果model里面已经在使用public function behaviors(),记得要在前面加上parent::behaviors($on);

12. Yii 数据库查询找出最新5个发布的内容 
在数据查询的时候,出现下面的是什么意思? 
$posts=Post::model()->published()->recently()->findAll(); 
这个是叫做named scope, 
每个命名范围被声明为一个可以被用来初始化CDbCriteria阵列实例。 
如要下面的例子

  1. class Post extends CActiveRecord {
  2. ......
  3. public function scopes() {
  4. return array(
  5. 'published'=>array(
  6. 'condition'=>'status=1',
  7. ),
  8. 'recently'=>array(
  9. 'order'=>'createTime DESC',
  10. 'limit'=>5,
  11. ),
  12. );
  13. }
  14. }

而$posts=Post::model()->published()->recently()->findAll();的意思就是找出最新的status为1的post的5条记录

13. 在views里面如何调用本controller的方法,获取一定的值 
直接在views里面使用$this->method(),如 
controller里面:

  1. class PostController extends Ccontroller {
  2. public function actionList(){....}
  3. public function getTitle(){return 'test title';}
  4. }

views的list.php 
<?php echo $this->getTitle();?> 
这样就可以调用本controller的方法了

14. Yii framework已经定义的命名空间常量 
system: Yii framework directory 
application: application's base directory 
webroot: the directory containing the entry script file 
ext: directory of extensions

system: 指向 Yii 框架目录; 
zii: 指向 zii library 目录; 
application: 指向应用程序 基本目录(base directory); 
webroot: 指向包含里 入口脚本 文件的目录. 此别名自 1.0.3 版起生效. 
ext: 指向包含所有第三方扩展的目录, 从版本 1.0.8 可用;

15. yii中如何不加载layout 
可以使用renderPartial()来代替render()

16. yii中向widget传值 
$this->widget('CMaskedTextField',array('mask'=>'99/99/9999'));

来自:第五实验室(http://www.5labs.net

From: http://koda.iteye.com/blog/1134712

Yii framework 应用总结小窍门(转)的更多相关文章

  1. 拓展Yii Framework(易框架)

    1.拓展yii 此文针对Yii1.1.15而写,请注意甄别你的Yii Framework 版本. 拓展yii是开发期间常见的代码处理方式.例如,你写一个新的controller(业务控制器),你通过继 ...

  2. Yii框架(Yii Framework)部署

    一.下载Yii 在部署yii框架之前首先要搭建好php环境,这里就不说搭建环境的问题了(这里已经部署好wampserver了),环境搭建好后,到yii官方网站下载yii framework:http: ...

  3. VAssistX使用小窍门

    日常使用中的一些VAssistX使用小窍门,简单总结下 一,修改VAssistX默认缓存文件路径,防止默认C盘被占用空间过大 1.  打开注册表HKCU\Software\Whole Tomato,新 ...

  4. MySql批处理的小窍门:排行榜类数据生成

    MySql批处理的小窍门:排行榜类数据生成 最近在做新版本的开发,其中涉及到排行榜的批量预生成,在此分享给大家. 关键点 名次的计算(不考虑用游标) 单榜单查询 对于排行榜这种类型的数据,当只查一个排 ...

  5. WPF中线性渐变画刷的一个小窍门

    最近被项目里面控件的设计搞的死去活来的,大部分的设计都会需要使用进度条的功能,因为UI形状的变态,使用ProgressBar不能满足需求,没办法就自己想办法实现进度显示.折腾的多了发现一个很不错的方法 ...

  6. YII Framework学习教程-YII的异常处理

    异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的.YII框架封装了PHP的异常,让异常处理起来更简单. 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII ...

  7. 教你50招提升ASP.NET性能(二十四):ORM小窍门

    ORM TipsORM小窍门 More and more people are using Object to Relational Mapping (ORM) tools to jump the d ...

  8. Yii Framework 开发教程Zii组件-Tabs示例

    有关Yii Tab类: http://www.yiichina.com/api/CTabView http://www.yiichina.com/api/CJuiTabs http://blog.cs ...

  9. YII Framework学习教程-YII的Model-开发规范-路径别名-命名空间

    到这里,大概的YII开发已经基本可以,但是下面要将的所有课程,学完之后可以让你更爱YII.下面的教程是讲的MVC的M,model.数据,业务,代码的集中地区.所以开始之前,学学开发规范-路径别名-命名 ...

随机推荐

  1. C# DES

    using System; //这个是使用DES的基础 using System.Security.Cryptography; //这个是处理文字编码的前提 using System.Text; // ...

  2. gentoo下的wpa_supplicant无线网配置

    在linux使用wpa_supplicant获得无线网的最痛苦的是莫过于去配置wpa_supplicant.conf文件了(当然对于linux老手这不算什么), 但是可以用一种简便的方法直接输入命令行 ...

  3. Navicat Premium 未保存的SQL如何找回 ?

    在使用 Navicat Premium 编辑SQL的过程中为防止程序意外崩溃,已经将编辑的SQL都已经备份. 备份存放目录地址:C:\Users\{登录用户名}\Documents\Navicat\M ...

  4. python 中对list做减法操作

    问题描述:假设我有这样两个list,          一个是list1,list1 = [1, 2, 3, 4, 5]          一个是list2,list2 = [1, 4, 5]     ...

  5. Axure草记

    页面控件和DataSet绑定,DataSet和输入控件绑定(通过临时变量) 双击Repeater进入之后,你会发现下面已经默认添加了3行,这代表着,每增加一行将会重复3遍: Repeater可以只是部 ...

  6. JDK神坑:JAVA中Calendar的月份Month少1

    很多朋友在使初次使用Calendar时,会发现月份莫名其妙对不上,显示的结果总是比预期中小1个月,检查好几遍也没发现程序有错,于是开始抓狂.其实这个时候,只要去看JDK就会明白问题所在.JDK告诉我们 ...

  7. 【网络流24题】 No.22~24

    接下来几题就写写题解吧.不是很想打了. 22. 输入文件示例input.txt4 21 2 7 36 5 8 37 8 10 59 6 13 9 输出文件示例output.txt17 最长不相交路径. ...

  8. Android Service 详解

    一个Service也是一种应用程序组件,它运行在后台以提供某种服务,通常不具有可见的用户界面.其它的应用程序组件可以启动一个 Service,即使在用户切换到另外一个应用程序后,这个Service还是 ...

  9. 【HDOJ】2853 Assignment

    最小费用最大流可解最优解.至于dif如何解,可以把w扩大100倍,如果mission编号和排列P相等则对w+1,然后建立网络流.对结果取模100可以得到没有改变mission的company数目,用c ...

  10. Learing WCF Chapter1 WCF Services

    WCF ServicesWCF services are the new distributed boundary in an enterprise application—with an empha ...