热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Yiiframwork应用小窍门

Yiiframework应用小窍门1.YiiFramework]如何获取当前controller的名称?下面语句就可以获取当前控制器的名称了!Php代码

Yii framework 应用小窍门

 

 

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

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. Yii::app()->controller->id    






2. yii 如何使用第三方插件
 


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




第二,在controller文件的头部,插入下面代码。 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. Yii::import('application.vendors.*');   
  2. require once('Zend/Search/Lucene.php');   


上面代码包含了Lucene.php这个类文件。因为我们用到的是相对路径,所以我们需要改变PHP加载文件的路径,Yii::import 一定要在require_once 之前。 




第三,一旦我们设置好了,我们就可以在controller里面使用了。比如说 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $lucene=new Zend Search Lucene($pathOfIndex);   
  2. $hits=$lucene->find(strtolower($keyword));   




3. yii中如何在查询的时候使用数据库函数
 


比如要使用mySQL中的md5函数, 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. Test::model()->findAll(new CDbExpression("md5(name) =1"));   




4. yii的controller中外挂action
 


创建 

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. class UpdateAction extends CAction {    
  2.   public function run() {    
  3.     // place the action logic here    
  4.   }    
  5. }    



调用 

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. class PostController extends CController {    
  2.   public function actions() {    
  3.     return array'edit'=>'application.controllers.post.UpdateAction', );    
  4.   }    
  5. }    





5. Yii创建widget 

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  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 里面配置 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. return array(   
  2.   'theme'=>'basic',   
  3.   //......   
  4. );   




要使用theme里面的资源的话,比如说images, js, css, 应该这样, 


[php] view plain copy
 print?在CODE上查看代码片default/common.css”   



8.Yii 如何在当前页面注册css和js文件
 
  
[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $cs=Yii::app()->clientScript;   
  2. $cs->registerCssFile($cssFile);   
  3. $cs->registerScriptFile($jsFile);   




9.Yii Captcha验证码的使用方法
 


假设使用的model名字为Comment 


Model里面 

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  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里面 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1.    
  2.      
  3.    
  4. Controller里面   
  5. public function xyz() {   
  6.   $comment = new Comment;   
  7.   $comment->validate('insert');   
  8.   //因为是insert的时候才会用到captcha,所以要加上参数'insert'   
  9. }   








10. 如何调用extension扩展
 


Components的方法 


引入以及定义: 


在config.php文件里面 

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  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代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  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个发布的内容 
在数据查询的时候,出现下面的是什么意思? 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $posts=Post::model()->published()->recently()->findAll();   


这个是叫做namedscope, 


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


如要下面的例子 

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  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. }    



[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $posts=Post::model()->published()->recently()->findAll();  


的意思就是找出最新的status为1的post的5条记录 


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

Php代码  


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. class PostController extends Ccontroller {    
  2.     public function actionList(){....}    
  3.     public function getTitle(){return 'test title';}    
  4.  }  

  



views的list.php 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. 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传值
 


[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $this->widget('CMaskedTextField',array('mask'=>'99/99/9999'));   


推荐阅读
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • node.js 全局变量说明
    原标题:node.js全局变量说明文章目录全局对象 ... [详细]
  • 1.使用升级命令update的问题composerupdate提示下面的错误:1、Warning:Thisdevelopmentbuildofcomposer ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • 本文详细说明了在JavaScript中解决alert弹出窗口文本换行问题的方法。通过给alert弹出的文本添加换行符,可以实现在弹窗中显示多行文本的效果。同时,提供了相关代码示例和注意事项,帮助读者更好地理解和应用这一解决方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
  • ES基本原理名词解释In-memorybuffer:ES内存缓冲区,新建的document写入的地方document:索引和搜索的 ... [详细]
  • v.1.2.beta4Igetthefollowingerrorwhentryingtodeleteauserfromtheadmin ... [详细]
author-avatar
雪莲2007019
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有