CakePHP:BeforeSave和AfterSave整个保存?

时间:2009-12-21 22:31:16

标签: cakephp callback

我遇到行为不端行为的问题。缺点是我使用行为挂钩到beforeSave和afterSave回调,但这对我的情况有意想不到的后果。是否有可能复制这个?

$this->Model->bsCallback();
if ($this->Model->saveAll($this->data)) { // Model might have other related models
    $this->Model->asCallback();
}

请注意,在保存Model和所有相关模型后,asCallback()将运行。这是我的绊脚石,我的模型中附加到我的模型中的afterSave被过早调用,而不是从相关模型中获取数据(因为它尚未编写)。将帮助器放在与模型相关的模型中会有所帮助,但我不能保证相关模型会在保存时触及,或者是否所有与模型相关的模型都会在那时更新。

所以是的,我怎么做'beforeSave'和'afterSave'正确处理涉及多个模型的保存?

1 个答案:

答案 0 :(得分:0)

在标准PHP中,您可以使用output buffering,如下所示:

ob_start();

include('a_page.php');
do_some_stuff();

// $data now holds all output and nothing is output at this point.
$data = ob_get_clean();

$this->Model->beforeSave($data);
$this->Model->saveAll($data);
$this->Model->afterSave($data);