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

Yii framework 应用小窍门的更多相关文章

  1. Yii framework 应用总结小窍门(转)

    1. Yii Framework] 如何获取当前controller的名称? 下面语句就可以获取当前控制器的名称了! Yii::app()->controller->id 2. yii 如 ...

  2. 拓展Yii Framework(易框架)

    1.拓展yii 此文针对Yii1.1.15而写,请注意甄别你的Yii Framework 版本. 拓展yii是开发期间常见的代码处理方式.例如,你写一个新的controller(业务控制器),你通过继 ...

  3. Yii框架(Yii Framework)部署

    一.下载Yii 在部署yii框架之前首先要搭建好php环境,这里就不说搭建环境的问题了(这里已经部署好wampserver了),环境搭建好后,到yii官方网站下载yii framework:http: ...

  4. VAssistX使用小窍门

    日常使用中的一些VAssistX使用小窍门,简单总结下 一,修改VAssistX默认缓存文件路径,防止默认C盘被占用空间过大 1.  打开注册表HKCU\Software\Whole Tomato,新 ...

  5. MySql批处理的小窍门:排行榜类数据生成

    MySql批处理的小窍门:排行榜类数据生成 最近在做新版本的开发,其中涉及到排行榜的批量预生成,在此分享给大家. 关键点 名次的计算(不考虑用游标) 单榜单查询 对于排行榜这种类型的数据,当只查一个排 ...

  6. WPF中线性渐变画刷的一个小窍门

    最近被项目里面控件的设计搞的死去活来的,大部分的设计都会需要使用进度条的功能,因为UI形状的变态,使用ProgressBar不能满足需求,没办法就自己想办法实现进度显示.折腾的多了发现一个很不错的方法 ...

  7. YII Framework学习教程-YII的异常处理

    异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的.YII框架封装了PHP的异常,让异常处理起来更简单. 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII ...

  8. 教你50招提升ASP.NET性能(二十四):ORM小窍门

    ORM TipsORM小窍门 More and more people are using Object to Relational Mapping (ORM) tools to jump the d ...

  9. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...

  10. Yii Framework 开发教程Zii组件-Tabs示例

    有关Yii Tab类: http://www.yiichina.com/api/CTabView http://www.yiichina.com/api/CJuiTabs http://blog.cs ...

随机推荐

  1. poi读取Excel文件,数字变成科学计数法及数字自动带上“.0”的处理办法

    解决poi解析excel遇到数值类型科学计数问题 NumberFormat nf = NumberFormat.getInstance();HSSFCell cell= hssfRow.getCell ...

  2. List,Set,Map存取元素各有什么特点 hashMap、hashTable的区别 Arraylist和linkedList的区别

    1.List,Set,Map存取元素各有什么特点? 1.存放 (1)List存放元素是有序,可重复 (2)Set存放元素无序,不可重复 (3)Map元素键值对形式存放,键无序不可重复,值可重复 2.取 ...

  3. animation 和 transition 的区别

    Transition 提供了从一种状态过渡到另一种状态的改变. Animation 则可以从不同关键帧(@keyframes)上设置多个过渡点. Transition 关注的是元素指定css属性的变化 ...

  4. scroll-view 横向滚动无效

    scroll-view的内层view元素需要: display: inline-block scroll-view的外层元素需要: white-space: nowrap 使得内部组件不换行.

  5. sqlserver 数据导入MySQL

    sqlserver导出成Excel文件数据 为什么用Excel文件数据? sql文件不通用 CVS文件编码报错 text文件日期/时间戳报错 修改Excel文件中的日期字段 需要格式化日期字段为 yy ...

  6. 图的基本操作 (c语言)

    图的基本操作:创建 删除 遍历 创建:邻接矩阵和邻接表 十字链表 下面代码是邻接矩阵的定义和邻接表的创建 遍历:深度优先遍历(一条路走到黑) 广度优先遍历(树的层次遍历) 具体代码: #include ...

  7. OpenStack组件说明

    1.版本对应组件 2.Juno版本的核心组件

  8. JML

    1.JML规格设计策略 我三次作业采用的方法都是从性能与存储大小方面考虑.在满足规格的条件下尽量做到运行速度最快,所用空间最小.因为这个单元的作业如果单单只是照着jml规格来翻译的话就失去了意义(因为 ...

  9. 容灾恢复 | 记一次K8S集群中etcd数据快照的备份恢复实践

    [点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...

  10. [ACTF2020 新生赛]Include 1

    首先进入靶场可以看到trip 查看源码 点击进入提示我们能不能找到flag 可以看到这里是文件包含,想着包含index.php但是根目录是自动索引的,无论输入什么都是trip页面 又想着包含flag. ...