php - 如何防止保存 Yii2 中的行为
问题描述
我想在我的几个 Yii2 模型中保存之前添加一个检查。
在 Yii1 中,这只是添加一个具有 beforeSave 方法的行为的情况,该方法返回 false。
这在 Yii2 中不起作用。我可以注册一个在保存之前调用的行为,但是从中返回 false 并不会阻止该保存。
任何人都知道如何实现这一点,而不必在我的所有模型中复制具有相同代码的 beforeSave 方法?
namespace app\components\behaviors;
use yii\base\Behavior;
use yii\db\ActiveRecord;
class PreventSaveBehavior extends Behavior
{
public function events()
{
return [
ActiveRecord::EVENT_BEFORE_INSERT => 'beforeSave',
ActiveRecord::EVENT_BEFORE_UPDATE => 'beforeSave',
];
}
public function beforeSave($insert)
{
if (SomeClass::shouldWePreventSave()) {
return false;
}
return parent::beforeSave($insert);
}
}
解决方案
推荐阅读
- haskell - 如何在 Raspbian 中升级 Raspberry Pi (4) 上的堆栈?
- spring-boot - H2数据库无法转换日期
- django - Django:从重置密码页面重定向登录用户
- c - CS50 Caesar 程序 (pset2) 运行但在 check50 中输出错误(“预期退出代码 1,而不是 0”)
- python - 当我在 sklearn 中为我的目标变量使用 LabelEncoder 时,如何解码多类?
- here-api - 是否有功能请求或注意地理编码搜索结果中的差异的地方?
- reactjs - 消息输入 React 组件禁用文件上传
- c# - 平台相关执行
- php - 将计数从一个表插入到另一个表
- java - 添加新值后,ArrayList 中的所有元素都更改为最后一个值