Php 如何防止在Yii2中保存行为
我想在保存我的几个Yii2型号之前添加一个检查 在Yii1中,这只是添加一个行为的一个例子,该行为具有beforeSave方法,该方法返回false 这在Yii2中不起作用。我可以注册一个在保存之前调用的行为,但是从中返回false并不能阻止保存 有人知道如何实现这一点,而不必在我所有的模型中使用相同的代码复制beforeSave方法吗Php 如何防止在Yii2中保存行为,php,yii2,Php,Yii2,我想在保存我的几个Yii2型号之前添加一个检查 在Yii1中,这只是添加一个行为的一个例子,该行为具有beforeSave方法,该方法返回false 这在Yii2中不起作用。我可以注册一个在保存之前调用的行为,但是从中返回false并不能阻止保存 有人知道如何实现这一点,而不必在我所有的模型中使用相同的代码复制beforeSave方法吗 namespace app\components\behaviors; use yii\base\Behavior; use yii\db\ActiveRec
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);
}
}
在行为中的Yii2中,您需要使用
modeleevent
的属性
public function beforeSave($event)
{
if (SomeClass::shouldWePreventSave()) {
$event->isValid = false;
}
}
这在Yii2中的中进行了解释,在行为中,您需要使用
modeleevent的属性
public function beforeSave($event)
{
if (SomeClass::shouldWePreventSave()) {
$event->isValid = false;
}
}
这已在中解释。啊,太好了,谢谢。与Yii1相比,这是一个很大的变化,我仍然试图以相同的方式使用“beforeSave”,正如其他示例所示。啊,很好,谢谢。与Yii1相比,这是一个很大的变化,我仍然试图以相同的方式使用“beforeSave”,正如其他示例所示。