Yii事件:将事件设置为最后一个

时间:2014-07-21 19:23:30

标签: events yii

我有几个事件处理程序(它们是CActiveRecordBehavior个类)来回答onAfterSave类的CActiveRecord事件。

其中一个事件处理程序需要调用其他事件才能继续。

我怎么能强迫这个事件成为最后一次执行?

我的行为声明如下:

public function behaviors()
{
    return array_merge(
        array(
            'firstBehavior' => array(
                'class' => 'application.components.firstBehavior',
            ),
            'secondBehavior' => array(
                'class' => 'application.components.secondBehavior',
            ),
        ), parent::behaviors()
    );
}

我知道当我打电话时

$model->getEventHandlers($eventName)->add($eventHandler);

该事件附加在列表的末尾并最后执行,但我现在不能放置此代码: - 在附加行为之前调用activeRecord对象的init()方法,这样即使我从此方法添加事件而不添加列表中的行为,添加的事件也不会是最后执行的事件。

1 个答案:

答案 0 :(得分:0)

AS Jon sais在评论中实现它的最佳方法是不附加事件处理程序bu来覆盖现有方法:

public function save($runValidation=true,$attributes=null)
{
    if(parent::save($runValidation, $attributes)) {
        //Handle my event since the other events have been executed
        // in the parent::save method
        return true;
    } else {
        return false;
    }
}