排行榜

Yii 过滤器(beforeAction)

本文阅读 2 分钟
首页 后端开发 正文
广告

Yii中的过滤器是指,通过配置,在一个控制器的动作被执行之前或者之后执行的一小段代码 。一个例子是,如果我们想要在某个动作执行后额外记录些什么,或者执行一些审核逻辑,可以编写一个简单的审计过滤器来进行这个动作之后的处理任务。

  • beforeValidate 和

  • beforeSave 和 afterSave : 这两个将在保存 AR 实例之前和之后被调用。

  • beforeDelete 和 afterDelete : 这两个将在一个 AR 实例被删除之前和之后被调用。

  • afterConstruct : 这个将在每个使用 new 操作符创建 AR 实例后被调用 。

  • beforeFind : 这个将在一个 AR 查找器被用于执行查询(例如 find() , findAll() )之前被调用。

  • afterFind : 这个将在每个 AR 实例作为一个查询结果创建时被调用。

CWebUser

afterLogin() 用户成功登录后被调用的方法。 CWebUser

afterLogout() 用户登出后被调用的方法。 CWebUser

beforeLogin() 在用户登录那一时刻前被调用的方法。 CWebUser

beforeLogout() 当用户调用logout注销时,将调用该方法。

model中

protected function beforeSave() {
if($this->isNewRecord){
$this->reg_date = $this->modify_date = time();
$this->passwd = $this->hasPassword($this->passwd1);
$this->credit = 0;
}else
$this->modify_date = time();
if($this->getScenario() == 'changePassword' || $this->getScenario() == 'resetPassword'){
$this->passwd = $this->hasPassword($this->passwd1);
}
return parent::beforeSave();
}
protected function beforeFind() {
parent::beforeFind();
$this->getDbCriteria()->addColumnCondition(array('type'=>self::TYPE_WIKI));
return true;
}
protected function afterSave(){
parent::afterSave();
if(!$this->isNewRecord){
$this->dbConnection->createCommand('DELETE FROM PostTag WHERE postId='.$this->id)->execute();
}
return true;
}

一个普遍的例子就是,当我们要求执行某个特定的控制器动作之前,用户必须已经登录,那么可以写一个简单的访问过滤器在这个动作执行之前来检查这个要求。

  • beforeAction

  • afterAction

controller中

public function beforeAction($action){
if(Yii::app()->user->isGuest&&$action->getId()!='login'){
$this->redirect(Yii::app()->loginUrl);
}
return parent::beforeAction($action);
}


本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.unfit.cn/archives/71.html
Yii中CDbCriteria常用总结
« 上一篇 07-19
Yii的处理事务
下一篇 » 07-19
广告

相关推荐