Yii直接使用event和在behavior里使用event的区别

1.使用现有的Event

现有的Event就是说Yii框架本身就为你设置好了一些事件,你只要为这些事件定义处理函数,当事件被触发,就会执行之前定义的处理函数.

我们先来了解一下CApplication类, 这个应用程序的基类,些类定义了三个事件

onBeginRequest 用户请求前处理;

processRequest: 用户请求处理;

onEndRequest: 用户请求后处理;

让我们为onBeginRequest这个事件定义[……]

阅读全文»

继续阅读Yii直接使用event和在behavior里使用event的区别

Yii 的 Behavior 详解

下面举个简单的对数据库更新和插入时间的可重用的例子

yii框架已经提供了一个CTimestampBehavior 行为类,只要设置好createAttribute和updateAttribute两个属性,,它分别对应你数据库表的创建时间和更新时间字段。像创建一篇文章时我们通常都会需要记录创建时间,更新时记录它的更新时间,详细使用,在你的Model类中behaviors方法中增加下面几行, 将createAttribute和updateAttribute更改为你数据库对应的时间字段即可:[……]

阅读全文»

继续阅读Yii 的 Behavior 详解

Yii Framework 中的YiiBase详解

在创建一个php的对象时,需要先include这个类的定义文件,然后再new这个对象。在不同环境下(开发环境/测试环境/线上环境),apache 的webroot路径的配置可能不一样,所以这个类的定义文件的全路径就会不同,Yii框架通过YiiBase的别名管理来解决了这个问题。

在创建对象时,需要导入对应类的定义,经常需要使用这5个函数:include()、include_once()、require()、 require_once()、set_include_path()。Yii通过使用Yi[……]

阅读全文»

继续阅读Yii Framework 中的YiiBase详解

Yii的AR单行数据自动缓存机制

相关的YII类:

CActiveRecord

CActiveRecordBehavior

cache

Active Record

Active Record (AR) 是一个流行的 对象-关系映射 (ORM) 技术。Yii DAO 可以处理几乎任何数据库相关的任务,不过对于一些基本的CRUD,YII推荐使用Active Record。

CActiveRecord 提供了几个占位符方法,它们可以在子类中被覆盖以自定义其工作流。[……]

阅读全文»

继续阅读Yii的AR单行数据自动缓存机制

Yii使用CAction类的事件

事件通常按以下方式使用:

在你的组件中声明事件并添加它的方法(即 function onClick($event))

将事件附加到事件处理程序(event handlers)(即 $object->onClick = array($handleObject, ‘staticMethod’);)

在你的组件中触发它来调用它的所有处理程序(即 $this->raiseEvent(‘onClick’, $event)).注意,对于处理程序来说,你可以写一个对象的[……]

阅读全文»

继续阅读Yii使用CAction类的事件

Yii自定义验证规则

简单的方法:在 model 内部定义规则

最简单的定义验证规则的方法是在使用它的模型(model)内部定义。

比方说,你要检查用户的密码是否足够安全.

通常情况下你会使用 CRegularExpression 方法验证,但为了本指南,我们假设不存在此验证方法.

首先在模型(model)中添加两个常量

const WEAK = 0;
const STRONG = 1;

然后在模型(model)的 rules 方法中设置:

/**
*[……]

阅读全文»

继续阅读Yii自定义验证规则

Yii如何确保URL的唯一性

例如我们有以下规则:

‘post/<id:\d+>’=>’post/read’,

以下的 URL 是有效的:

post/read/id/5
post/read?id=5
post/5

如果我们有后缀,例如 .html,以下的 URL 是有效的,

post/read/id/5.html
post/read.html?id=5
post/5.html

一共有 6 个 URL,这不符合 SEO,

解决的方法很简单,只需在你的控制器([……]

阅读全文»

继续阅读Yii如何确保URL的唯一性
鄂ICP备13000209号-1

鄂公网安备 42050602000277号