我什么时候应该在我的Yii模型中调用parent :: beforeDelete()

时间:2014-07-01 11:36:25

标签: yii model yii-events

到目前为止,我一直在调用/检查parent::beforeDelete() 的结果我自己的代码:

public function beforeDelete()
{
    if(parent::beforeValidate())
    {
        $this->short = strtolower(preg_replace("/[^a-zA-Z0-9_-]+/", "", (string)$this->short));

        return TRUE;
    }

    return FALSE;
}

(从模型的某个属性中删除不正确的字符的示例)

但是现在,我找到了this answer

public function beforeDelete()
{
    foreach($this->qualifications as $q)
        $q->delete();
    return parent::beforeDelete();
}

(删除相关模型记录的示例)

我很困惑?我该什么时候打电话给parent::beforeDelete()?总是在我的代码执行之前,总是在执行我的代码之后或者根据上下文/我正在做什么?

1 个答案:

答案 0 :(得分:1)

某些方法附加了事件侦听器,在本例中为onBeforeDelete事件。您必须调用父实现,以便正确引发事件。

总是在最后一个更安全,因为如果你在代码之前调用它,并且你的代码修改了会导致beforeDelete中的代码失败的内容,那么现在就不会发生beforeDelete被提前触发了。

在您的第一个示例中,您在beforeValidate函数中调用了完全不同的 beforeDelete