使用Yii的CActiveRecord onBeforeDelete

时间:2013-08-22 07:15:20

标签: events activerecord yii

我正在尝试将一些听众附加到CActiveRecord的onBeforeDelete上,我这样做如下:

<?php
class SomeModule extends CWebModule
{
    public function init()
    {
        Submission::model()->onBeforeDelete = array($this, 'cleanUpFiles');
    }

    public function cleanUpFiles ($event) {
        var_dump('Well... Hi there, being deleted are we?');
    }
}
?>

可悲的是,这对Submission的{​​{1}}没有任何影响。但是,在用delete()替换onBeforeDelete时,似乎无法对查找方法做出无缝反应。我感觉onBeforeDelete应该应用于onBeforeFind的实例,而不是它的单例模型,感觉是否正确?如果我是正确的,有没有其他方法可以在Submission的全局中将我的事件监听器附加到全局?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我设法通过一点即兴来解决这个问题,我已经覆盖了Submission的函数beforeDelete(),如下所示:

<?php
protected function beforeDelete() {
    foreach (Submission::model()->onBeforeDelete as $key => $value) {
        $this->onBeforeDelete = $value;
    }
    return parent::beforeDelete();
}
?>

现在,当调用delete时,beforeDelete()将从单例模型中删除onBeforeDelete并将其分配给它自己的实例。现在,正在触发回调。