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

标签 yii model yii-events

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

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()?总是在我的代码执行之前,总是在我的代码执行之后或者取决于上下文/我正在做什么?

最佳答案

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

始终放在最后更安全,因为如果您在代码之前调用它,并且您的代码修改了一些可能导致 beforeDelete 中的代码失败的内容,那么现在不会发生这种情况 beforeDelete 较早触发。

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

关于yii - 我什么时候应该在 Yii 模型中调用parent::beforeDelete(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24509331/

相关文章:

yii - CGridView 通过关系 Id 参数对关系表进行排序

命名空间 : Controller or Controllers, 中的 PHP 's' 模型或模型?

php - 在 URL 中传递多个变量 - Yii2

php - Yii2 - 在其余 ActiveController 中覆盖 checkAccess

php - 如何在 yii 中运行 mysql 查询

python - 如何将 python 代码与 SWAT 分水岭模型结合起来

ruby-on-rails - 如何使用 Rails 中其他模型的数据自动填写表单

model - Alpine JS 没有正确更新 x-model