Yiiframwork应用小窍门
作者:雪莲2007019 | 来源:互联网 | 2023-10-17 16:23
Yiiframework应用小窍门1.YiiFramework]如何获取当前controller的名称?下面语句就可以获取当前控制器的名称了!Php代码
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() { } }
调用
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() { } public function run() { } }
通常,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, 应该这样,
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里面
10. 如何调用extension扩展 Components的方法 引入以及定义: 在config.php文件里面
Php代码
'components' => array ( 'xyz' => array ( 'class' => 'ext.xyz.XyzClass' , 'property1' => 'value1' , 'property2' => 'value2' , ), ),
使用方法: 在 任何地方,使用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
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' ));
推荐阅读
本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ...
[详细]
蜡笔小新 2024-12-27 16:27:52
本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ...
[详细]
蜡笔小新 2024-12-26 17:37:25
本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ...
[详细]
蜡笔小新 2024-12-24 15:48:48
本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ...
[详细]
蜡笔小新 2024-12-28 08:39:55
本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ...
[详细]
蜡笔小新 2024-12-26 22:04:19
本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ...
[详细]
蜡笔小新 2024-12-26 19:42:38
使用GDI的一些AIP函数我们可以轻易的绘制出简 ...
[详细]
蜡笔小新 2024-12-25 18:23:37
实体映射最强工具类:MapStruct真香 ...
[详细]
蜡笔小新 2024-12-25 16:22:17
本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ...
[详细]
蜡笔小新 2024-12-25 14:15:29
本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ...
[详细]
蜡笔小新 2024-12-23 16:17:45
Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ...
[详细]
蜡笔小新 2024-12-28 09:44:49
本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ...
[详细]
蜡笔小新 2024-12-27 10:34:22
在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ...
[详细]
蜡笔小新 2024-12-27 09:27:14
本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ...
[详细]
蜡笔小新 2024-12-25 22:53:48
对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ...
[详细]
蜡笔小新 2024-12-23 12:55:35