最新消息: 新版网站上线了!!!

Yii framework 应用总结小窍门

  1. Yii Framework] 如何获取当前controller的名称?

  下面语句就可以获取当前控制器的名称了!

  Php代码

 

 

  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

  创建

  Php代码

 

 

  class UpdateAction extends CAction {

  public function run() {

  // place the action logic here

  }

  }

  调用

  Php代码

收藏代码

 

  class PostController extends CController {

  public function actions() {

  return array( ’edit’=>’application.controllers.post.UpdateAction’, );

  }

  }

  5. Yii创建widget

  Php代码

 

 

  class MyWidget extends CWidget {

  public function init() {

  // this method is called by CController::beginWidget()

  }

  public function run() {

  // this method is called by CController::endWidget()

  }

  }

  通常,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里面

  Php代码

收藏代码

 

  public function rules() {

  return array(

  ……

  array(‘verifyCode’,

  ’captcha’,

  ’on’ => ’insert’,

  ’allowEmpty’ => !Yii::app()->user->isGuest || !extension_loaded(‘gd’)),

  );

  }

  View里面

  

 

  

  

 

  Controller里面

  public function xyz() {

  $comment = new Comment;

  $comment->validate(‘insert’);

  //因为是insert的时候才会用到captcha,所以要加上参数’insert’

  }

  10. 如何调用extension扩展

  Components的方法

  引入以及定义:

  在config.php文件里面

  Php代码

收藏代码

 

  ‘components’=>array(

  ’xyz’=>array(

  ’class’=>’ext.xyz.XyzClass’,

  ’property1′=>’value1′,

  ’property2′=>’value2′,

  ),

  // other component configurations

  ),

  使用方法:

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

  11. Yii 数据保存时自动插入createTime和updateTime

  Yii 1.1 version之后,可以直接这样:

  Php代码

收藏代码

 

  public function behaviors(){

  return array(

  ’CTimestampBehavior’ => array(

  ’class’ => ’zii.behaviors.CTimestampBehavior’,

  ’createAttribute’ => ’create_time_attribute’,

  ’updateAttribute’ => ’update_time_attribute’,

  )

  );

  }

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

  12. Yii 数据库查询找出最新5个发布的内容

  在数据查询的时候,出现下面的是什么意思?

  $posts=Post::model()->published()->recently()->findAll();

  这个是叫做named scope,

  每个命名范围被声明为一个可以被用来初始化CDbCriteria阵列实例。

  如要下面的例子

  Php代码

收藏代码

 

  class Post extends CActiveRecord {

  ……

  public function scopes() {

  return array(

  ’published’=>array(

  ’condition’=>’status=1′,

  ),

  ’recently’=>array(

  ’order’=>’createTime DESC’,

  ’limit’=>5,

  ),

  );

  }

  }

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

  13. 在views里面如何调用本controller的方法,获取一定的值

  直接在views里面使用$this->method(),如

  controller里面:

  Php代码

收藏代码

 

  class PostController extends Ccontroller {

  public function actionList(){….}

  public function getTitle(){return ’test title’;}

  }

  views的list.php

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

转载请注明:谷谷点程序 » Yii framework 应用总结小窍门