Yii使用技巧大汇总(6)

Yii::app()->request->url;


ctype_开始的几个函数,用于检查字任串是不是符合要求,代替了简单的正则表达式
CController中的setPageState可以保存同一页中的POST的表单状态

如何通过BEhavior修改CActiveRecord?

写类文件继承自

class LLog extends CActiveRecordBehavior{ public function beforeDelete($event){ $model = get_class($this->Owner); //做要做的事,比如日志或修改模型字段内容 } }

然后修改模型文件

public function behaviors() { return array( // Classname => path to Class 'LLog'=>'application.behavior.LLog', ); }

如何在应用程序处理请求之前执行一段操作?

在main.php中配置

复制代码 代码如下:

'onBeginRequest' => 'function'


当然这个function方法要存在

也可以写在放口文件index.php中,代码改成如下

$app = Yii::createWebApplication($config); $app->onbeginRequest = 'begin'; $app->run(); function begin(){ echo 'yyyyydddyyyyyy'; }

为什么在CActiveRecordBehavior中用

beforesave就可以代表了事件onBeforeSave

注意基为中最上边的events方法中返回的对应关系

复制代码 代码如下:

'onBeforeSave'=>'beforeSave'


在调用attacth(CBehavior中)的时候,

复制代码 代码如下:

$owner->attachEventHandler($event,array($this,$handler));


就指定了事件onBeforeSave的处理函数是用本类中的beforeSave
YII中的CComponent,CEvent与Behavior及CActiveRecordBehavior个人理解

这一块教程少,今天个人理解了下,写了个小例子,有助于理解

完成如下功能,一个JTool类,继承CComponent,当其长度改变时,调用事件,输出"change me".

JTool.php在protected/components 下

<?php class JTool extends CComponent{ private $_width; public function getWidth(){ return $this->_width ? $this->_width : 1; } public function setWidth($width){ if($this->hasEventHandler('onChange')){ $this->onChange(new CEvent()); } $this->_width = $width; } public function onChange($event){ $this->raiseEvent('onChange', $event); } }

OK,功能已经实现了,找个控制器,执行

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2f8106786391352ef2279db1bd51a4b1.html