`
fantaxy025025
  • 浏览: 1328343 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Yii framework_应用小窍门总结_Yii_Tips

 
阅读更多

 

Yii framework_应用小窍门总结_Yii_Tips

 

Yii 中如何获得application,其是yii的应用核心,相当于rails的application。

 

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

Php代码  收藏代码
  1. Yii::app()->controller->id  

 

$this->getAction()->getId();
//因为是yii么,可以这么写
$this->action->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代码  收藏代码
  1. class  UpdateAction  extends  CAction {  
  2.   public   function  run() {  
  3.     // place the action logic here   
  4.   }  
  5. }  


调用

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



5. Yii创建widget

Php代码  收藏代码
  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里面

Php代码  收藏代码
  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文件里面

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之后,可以直接这样:

Php代码  收藏代码
  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阵列实例。
如要下面的例子

Php代码  收藏代码
  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里面:

Php代码  收藏代码
  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://koda.iteye.com/blog/1134712 有增加和修改

 

 

 

+

-

*

/

==结束==

/

*

-

+

 

 

 

分享到:
评论

相关推荐

    Yii2_Aliyun_OSS_______Yii2_阿里云_OSS_yii2-aliyun-oss.zip

    Yii2_Aliyun_OSS_______Yii2_阿里云_OSS_yii2-aliyun-oss

    yii-1.1.4.r2429.zip_mvc php_php yii_yii 1.1.4.rar_yii mvc_yii1.1

    Yii 框架是 PHP 开发领域中的一款高效、开源的 Web 应用程序开发框架,专注于性能优化和开发效率提升。"yii-1.1.4.r2429.zip_mvc php_php yii_yii 1.1.4.rar_yii mvc_yii1.1" 这个标题提到了 Yii 框架的一个特定版本...

    YII srbac_1.3

    总结,`YII srbac_1.3` 是一个强大且易用的RBAC解决方案,它简化了Yii框架中的权限管理,让开发者能够更专注于业务逻辑的实现,而不是安全性细节。正确配置和使用此插件,可以显著提升Web应用的安全性和用户体验。

    Yii Framework API手册

    Yii Framework API手册是针对开发者的一款详尽参考资料,它包含了Yii框架的所有核心组件、类库以及扩展的使用方法和接口信息。Yii是一个高性能、基于组件的PHP框架,用于开发Web 2.0应用。API(Application ...

    yii1.1_application_development_cookbook_code

    《Yii1.1 Application Development Cookbook Code》是一本专注于Yii框架1.1版本的实践指南,其配套代码资源在yii1.1_application_development_cookbook_code.zip中,为PHP开发者提供了丰富的实例和解决方案。Yii是一...

    阿里云_dysms_官方_SDK_的_Composer_封装,支持_yii2_项目。_yii2-dysms.zip

    阿里云_dysms_官方_SDK_的_Composer_封装,支持_yii2_项目。_yii2-dysms

    yii framework框架 + yii app模板(基本、高级).zip

    yii framework框架 + yii app模板(基本、高级)

    Yii Framework 2.0 权威指南 pdf格式 中文高清离线版 有书签

    ### Yii Framework 2.0 权威指南知识点详解 #### 一、Yii框架概述 - **定义**:Yii是一款高效能、基于组件的PHP框架,主要用于加速现代Web应用的开发进程。其名称“Yii”(发音类似于“易”)在中国文化中有“极致...

    yiiframework_ru_cookbook:俄语Yii 1.1食谱

    ** Yiiframework Ru Cookbook: 俄语版Yii 1.1框架实践指南 ** Yiiframework Ru Cookbook 是一本专为俄语用户设计的关于Yii 1.1框架的实战教程,它旨在帮助开发者深入理解和应用这个强大的PHP框架。Yii框架,作为一...

    agile_web_application_development_with_yii1.1_and_php5_code.zip

    总结来说,这个压缩包提供了基于Yii1.1和PHP5的敏捷Web应用开发实例,涵盖了从基础架构到具体功能实现的全方位代码示例。通过深入学习和实践这些代码,开发者不仅可以提升对Yii框架的理解,还能掌握敏捷开发的最佳...

    Yii Framework 1.1.6

    Yii Framework 1.1.6 是一个高效、可扩展的 PHP 开发框架,它为开发者提供了构建大型Web应用所需的工具和功能。这个版本是Yii框架的稳定版本之一,发布于2011年,旨在提高开发效率并降低维护成本。 在Yii 1.1.6中,...

    YII Framework框架教程之使用YIIC快速创建YII应用详解

    主要介绍了YII Framework框架教程之使用YIIC快速创建YII应用的方法,详细分析说明了YII Framework框架使用YIIC命令行创建应用的相关技巧与注意事项,需要的朋友可以参考下

    Yii 2.0 权威指南-10142017.pdf.tar.gz_Yii2.0_yes_yii框架

    2. **基于组件**:Yii 的设计模式主要基于组件,允许开发者将应用程序分解为独立、可复用的部分,便于维护和扩展。 3. **ActiveRecord**:Yii 提供了强大的 ActiveRecord 实现,简化了数据库操作。它将数据库表映射...

    Yii Framework v2.0.8.rar

    Yii Framework是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。

    Yii Framework框架中事件和行为的区别及应用实例分析

    主要介绍了Yii Framework框架中事件和行为的区别及应用,结合实例形式分析了Yii Framework框架中事件和行为的相关概念、原理、区别及应用操作技巧,需要的朋友可以参考下

    yii framework 中文完全手册

    这个“yii framework 中文完全手册”提供了详尽的指南,帮助开发者理解和利用Yii的强大功能。在深入探讨之前,我们先简单介绍一下Yii框架的基本概念。 Yii,发音为"易",寓意“简易”,是一个快速、安全且专业的...

    Yii Framework v1.1.19

    Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。

    agile_web_application_development_with_yii1.1_and_php5.tgz

    《应用Yii和PHP进行敏捷Web开发》这本书详细探讨了如何利用Yii 1.1框架和PHP 5技术来构建高效、可扩展且敏捷的Web应用程序。Yii是一个高性能的,适用于开发大型Web应用的PHP框架,它强调代码复用,提供丰富的特性以...

    YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解

    本文实例讲述了YII Framework框架使用YIIC快速创建YII应用之migrate用法。分享给大家供大家参考,具体如下: yii migrate 查看帮助 /* /www/yii_dev/yii/framework# php yiic migrate help Error: Unknown action: ...

Global site tag (gtag.js) - Google Analytics