用behavior的好处是可以通过“插入”的方式来获得新的功能。你当然可以直接把代码写在model里。不过如果类似的代码需要在若干个model里实现,那么behavior就可以让你重用这段代码 。
1.CActiveRecordBehavior
yii框架已经提供了一个CTimestampBehavior 行为类,只要设置好createAttribute和updateAttribute两个属性,,它分别对应你数据库表的创建时间和更新时间字段。像创建一篇文章时我们通常都会需要记录创建时间,更新时记录它的更新时间,详细使用,在你的Model类中behaviors 方法中增加下面几行, 将 createAttribute和updateAttribute更改为你数据库对应的时间字段即可:
public function behaviors(){ return array( 'CTimestampBehavior' => array( 'class' => 'zii.behaviors.CTimestampBehavior', 'createAttribute' => 'create_time_attribute', 'updateAttribute' => 'update_time_attribute', ) ); }
XSS安全模式类
在这篇文章里,我们将描述一个基于WEB应用下避免不合法的内容注入。
我们要在一个行为里使用htmlpurifier 类,用这种行为可以加强任何模型并表明各属性我们想让它们XSS安全。
我写了以下行为:
<?php class CSafeContentBehavior extends CActiveRecordBehavior { public $attributes =array(); protected $purifier; function __construct(){ $this->purifier = new CHtmlPurifier; } public function beforeSave($event) { foreach($this->attributes as $attribute){ $this->getOwner()->{$attribute} = $this->purifier->purify($this->getOwner()->{$attribute}); } } }
把这个类放在你的应用程序目录,例如:application/behaviors/CSafeContentBehavior.php。现在你在模型的行为中这样去写:
<?php class Post extends CActiveRecord { public function behaviors(){ return array( 'CSafeContentBehavor' => array( 'class' => 'application.behaviors.CSafeContentBehavior', 'attributes' => array('title', 'body'), ), ); } }
现在我们可以开始了。我们的post模型在每个保存操作中将净化标题和内容列。
保存一条记录后,更新订单号,适合所有订单号
<?php class No13Behavior extends CActiveRecordBehavior { public $pk = ''; public $orderNo = ''; public $prefix = ''; public function afterSave($event) { if ($this->getOwner()->getIsNewRecord()) { if (empty($this->pk) || empty($this->orderNo) || empty($this->prefix)) { return false; } $id = $this->getOwner()->{$this->pk}; $val = $this->prefix . date('ymd') . str_pad($id, 5, '0', STR_PAD_LEFT); $this->getOwner()->updateByPk($id, array($this->orderNo =>$val) ); } } }
2.CBehavior
自动导入module模块,config/main的modules不需要加对应的module名。可以在数据库中配置
<?php /** * ApplicationConfigBehavior is a behavior for the application. * It loads additional config parameters that cannot be statically * written in config/main */ class ModuleBehavior extends CBehavior { /** * Declares events and the event handler methods * See yii documentation on behavior */ public function events() { return array_merge(parent::events(), array( 'onBeginRequest' => 'beginRequest', )); } /** * Load configuration that cannot be put in config/main */ public function beginRequest() { $modules = array(); $model = Module::model()->findAll(); // Todo - should be per application foreach ($model as $item) { $modules[$item->name] = array(); // Todo can set parameters here for each module... } //$modules['video'] = array(); Yii::app()->setModules($modules); } } ?>
'behaviors' => array( 'theme' => 'application.components.behaviors.ThemeBehavior', 'lang' => 'application.components.behaviors.LangBehavior', 'module'=> 'application.components.behaviors.ModuleBehavior' ),上面main也可以替代index.php
$app = Yii::createWebApplication($config); $app->attachBehavior('module','application.components.behaviors.ModuleBehavior');
相关推荐
很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架
本文实例讲述了YII2框架中behavior行为的理解与使用方法。分享给大家供大家参考,具体如下: YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。 行为附加到组件后,行为将注入自已的方法和属性到...
yii2-upload-behavior, ActiveRecord的Yii2文件/图像上传行为 Yii2文件/图像上传行为这个包是两种类似行为的集合。 第一个允许你将上传的文件保留为。 第二个允许你为上传的图片生成缩略图。 可以为不同的属性多次...
本文实例讲述了YII2.0框架行为(Behavior)。分享给大家供大家参考,具体如下: 行为(Behavior) 使用行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。 通过将行为绑定到一个类,可以使类具有...
它将 Web 编程中的可重用性发挥到极致,能够显著加速开发进程。Yii(读作“易”)代表简单(easy)、高效(efficient)、可扩展(extensible)。 需求 要运行一个基于 Yii 开发的 Web 应用,你需要一个支持 PHP 5.1.0 ...
用于基于 RBAC 的权限认证-yii2-behavior-rbac
Yii2.0级基于Yii1.X完全重写的,不仅是小版本升级的升级。所以想要系统学习Yii2.0这个框架这套教程可以从实战项目带你入手。不错的学习YII框架的基础课程,电商系统的结构完整、框架资源太大,传百度网盘了,链接在...
《深入理解Yii2.0》是一本干货。主要讲解Yii2.0及所代表的最新一代Web开发框架的新特性、新技术、新理念、新模式。 采用的方式是分析框架的源代码,尝试从根上进行理解和阐述,并融入个人使用Yii开发的一些经验和...
yii2 swoole:让yii2运行在swoole上 , 运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上
Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上...
yii1.1.10 开发包(包含yii权威指南以及yii博客例子讲解)
Yii权威指南思维导图 yii类结构 类导图 权威指南
yii框架中文手册教程和YII模板 我很辛苦才找到的
Yii Framework 2 (Yii2) is the successor to the popular Yii framework. Like its successor, Yii2 is an open source, high-performance rapid development framework designed to create modern, scalable, ...
Yii2参考手册,Yii2中文手册完整版
YII 多种缓存机制的运用 如文件缓存内存缓存 动态缓存等
刚下载的yii2,新下载的yii2
yii framework框架 + yii app模板(基本、高级)
yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架
而且,它定义的类层次结构允许最大的可重用性和定制。 16、友好的使用第三方代码:Yii精心设计让它第三方代码非常好的工作。例如,你可以在你的Yii应用程序中使用PEAR或Zend Framework的代码。 17、详细的文档:...