作者:雪莲2007019 | 来源:互联网 | 2023-10-17 16:23
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'));
推荐阅读
-
本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ...
[详细]
蜡笔小新 2024-11-20 19:26:30
-
本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ...
[详细]
蜡笔小新 2024-11-19 13:48:51
-
-
本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ...
[详细]
蜡笔小新 2024-11-12 16:05:44
-
本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ...
[详细]
蜡笔小新 2024-11-21 17:17:01
-
本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ...
[详细]
蜡笔小新 2024-11-21 17:10:15
-
在ATAC-seq数据处理中,插入片段长度的分布图是一个重要的质量控制指标,它能反映出核小体的周期性排列。本文将详细介绍如何从BAM文件中提取并绘制这些数据。 ...
[详细]
蜡笔小新 2024-11-20 22:35:16
-
本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ...
[详细]
蜡笔小新 2024-11-20 19:24:42
-
小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ...
[详细]
蜡笔小新 2024-11-20 15:33:07
-
本文通过具体示例探讨了如何在iOS应用中有效使用scrollView,并解决了常见的无法滚动问题。不仅介绍了基础的使用方法,还详细讲解了代码实现的具体步骤。 ...
[详细]
蜡笔小新 2024-11-20 09:22:08
-
协程作为一种并发设计模式,能有效简化Android平台上的异步代码处理。自Kotlin 1.3版本引入协程以来,这一特性基于其他语言的成熟理念,为开发者提供了新的工具,以增强应用的响应性和效率。 ...
[详细]
蜡笔小新 2024-11-19 10:13:02
-
本文详细介绍了Android系统的四层架构,包括应用程序层、应用框架层、库与Android运行时层以及Linux内核层,并提供了如何关闭Android系统的步骤。 ...
[详细]
蜡笔小新 2024-11-19 09:04:28
-
本文详细介绍了如何在PHP中屏蔽警告和错误,包括多种方法和最佳实践,帮助开发者提升代码质量和安全性。 ...
[详细]
蜡笔小新 2024-11-16 02:00:40
-
本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ...
[详细]
蜡笔小新 2024-11-14 18:30:58
-
本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ...
[详细]
蜡笔小新 2024-11-13 17:03:49
-
本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ...
[详细]
蜡笔小新 2024-11-13 11:19:38
-