开发者社区> jefferyjob> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Yii framework 应用小窍门

简介: Yii framework 应用小窍门     1. Yii Framework] 如何获取当前controller的名称?  下面语句就可以获取当前控制器的名称了!  Php代码   Yii::app()->controller->id 2. yii 如何使用第三方插件  第一,比如说,我们要使用 Zendframework的东西。我们把zend fram
+关注继续查看

Yii framework 应用小窍门

 

 

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

Php代码  

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


2. yii 如何使用第三方插件 
第一,比如说,我们要使用 Zendframework的东西。我们把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里面 

<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文件里面 

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(); 
这个是叫做namedscope, 
每个命名范围被声明为一个可以被用来初始化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 

<?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')); 


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Entity Framework 索引
Entity Framework 索引
37 0
Entity Framework 小知识(四)
Entity Framework 小知识(四)
42 0
Entity Framework 小知识(三)
Entity Framework 小知识(三)
42 0
Entity Framework 小知识(一)
Entity Framework 小知识(一)
15 0
Entity Framework版本历史概览
转自:http://www.cnblogs.com/fecktty2013/archive/2014/09/26/entityframework-overview.html   EF版本 .
1018 0
Entity Framework初探
近期公司打算使用EF,于是这两天我特地研究了它的一些特性。本文记录的是我的一些研究成果。。。哎哟,说成果是不是大了点? ps:对于EF,每次它有新版发布,我都一笑而过,为啥?因为我一直非常安逸于使用一个叫IQToolkit的开源组件,该组件作者有专门写了一系列博文记录IQToolkit从无到有的诞生历程,我估计市面上很多基于Linq的ORM或多或少都借鉴过他的经验[和代码]。
1100 0
Entity Framework 并发处理
原文 http://www.cnblogs.com/Gyoung/archive/2013/01/18/2866649.html 什么是并发? 并发分悲观并发和乐观并发。 悲观并发:比如有两个用户A,B,同时登录系统修改一个文档,如果A先进入修改,则系统会把该文档锁住,B就没办法打开了,只有等A修改完,完全退出的时候B才能进入修改。
890 0
yii framework docs
http://www.yiiframework.com/doc/guide/ http://www.
555 0
+关注
jefferyjob
继承,是幸福的延续;重载,是幸福的重生。
50
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载