常用的before和after汇集
beforeAction afterAction 方法 前后被调用的方法
beforeFilter afterFilter 过滤 前后被调用的方法
beforeRender afterRender 输出 前后被调用的方法
beforeValidate afterValidate 校验 前后被调用的方法
beforeSave afterSave 这两个将在保存 AR 实例之前和之后被调用
beforeDelete afterDelete 这两个将在一个 AR 实例被删除之前和之后被调用
beforeLoad afterLoad Integrity 开关 before为false after为true
beforeUnload afterUnload Integrity 开关 before为false after为true
beforeSend afterSend 邮件发送前后被调用的方法
beforeLogin afterLogin 用户成功登录前后被调用的方法
beforeLogout afterLogout 用户成功登出前后被调用的方法
————————————————
版权声明:本文为CSDN博主「zhengtao27」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhengtao27/article/details/49763241
Model 层
保存之前的事件示例
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
// 插入新数据判断订单号是否存在
if (!Order::findModel(['trade_no' => $this->order_trade_no])) {
throw new Exception("订单号不存在");
}
return true;
} else {
return false;
}
}
保存之后的事件示例
public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
if ($insert) {
// 插入新数据之后修改订单状态
Order::updateAll(['shipping_status' => Order::SHIPPING_STATUS1, 'shipping_at' => time()], ['trade_no' => $this->order_trade_no]);
}
}
删除之前的事件示例
public function beforeDelete()
{
if (parent::beforeDelete()) {
// something code
return true;
} else {
return false;
}
}
删除之后的事件示例
public function afterDelete()
{
parent::afterDelete();
}
Model 事件怎么保证数据事务呢?
添加一下代码在 Model 中:
public function transactions()
{
return [
self::SCENARIO_DEFAULT => self::OP_INSERT | self::OP_UPDATE | self::OP_DELETE
// self::SCENARIO_DEFAULT => self::OP_INSERT
];
}
Controller 层
每次请求之前操作示例
/**
* @param \yii\base\Action $action
* @return bool
* @throws \yii\web\BadRequestHttpException
*/
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
$this->request = Yii::$app->request;
Yii::info($this->request->absoluteUrl, '请求地址');
Yii::info($this->request->rawBody, '请求数据');
return true;
} else {
return false;
}
}
每次请求之后操作示例
/**
* @param \yii\base\Action $action
* @param mixed $result
* @return array|mixed
* @throws BusinessException
*/
public function afterAction($action, $result)
{
Yii::info(\yii\helpers\Json::encode($result), '请求返回结果');
return $result;
}
来自 <https://www.sunyann.com/yii2-before-after/>
No comments to display
No comments to display