如何知道在Yii2中触发的事件是成功还是失败

如何知道在Yii2中触发的事件是成功还是失败,yii2,yii-events,Yii2,Yii Events,我在Yii2事务中触发了一个事件,我想知道事件处理程序是成功提交了该事务,还是回滚失败 全局变量或类常量是否正确 我现在要做的是在事件处理程序中抛出一个错误。通常使用事件对象来存储事件状态。创建自定义事件: class MyEvent extends Event { public $isCommited = false; } 在触发器上使用它并检查结果: $event = new MyEvent(); $this->trigger('myEvent', $event); if

我在Yii2事务中触发了一个事件,我想知道事件处理程序是成功提交了该事务,还是回滚失败

全局变量或类常量是否正确


我现在要做的是在事件处理程序中抛出一个错误。

通常使用事件对象来存储事件状态。创建自定义事件:

class MyEvent extends Event {

    public $isCommited = false;
}
在触发器上使用它并检查结果:

$event = new MyEvent();
$this->trigger('myEvent', $event);
if ($event->isCommited) {
    // do something
}
在事件处理程序中,需要设置此属性:

function ($event) {
    // do something
    $event->isCommited = true;
}


如果要中断事件流,可以使用属性而不是
iscommitted
和自定义事件。

ummm。。。如果您的事务在
try{}catch(){}
块中使用,如果在事件中出现异常,它将被自动捕获,不是吗?或者您正在谈论事件逻辑的正确执行?是的,我倾向于指正确的逻辑执行。
isCommitted
更灵活,事件处理程序E1将其设置为false以回滚事件发送方的事务,但事件处理程序E2也可以执行嵌套事务中封装的E2内的sql。