到目前为止,我一直在调用/检查 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/