CakePHP: BeforeSave и AfterSave на все сохранение? - PullRequest
2 голосов
/ 22 декабря 2009

У меня проблема с плохим поведением. Суть в том, что я подключаюсь к обратным вызовам beforeSave и afterSave, используя поведение, но это имеет непредвиденные последствия для моей ситуации. Можно ли это повторить?

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

Обратите внимание, что asCallback () запускается после сохранения модели и всех связанных моделей. Это был мой камень преткновения, мой afterSave в моем поведении, которое привязано к моей Модели, вызывается слишком рано и не получает данные из связанных моделей (потому что это еще не было написано). Помогает использование помощника в модели, связанной с моделью, но я не могу гарантировать, что соответствующая модель будет затронута при сохранении или если все модели, связанные с моделью, будут обновлены к этому времени.

Так, да, как мне правильно сделать 'beforeSave' и 'afterSave' для сохранения, которое затрагивает несколько моделей?

1 Ответ

0 голосов
/ 18 мая 2012

В стандартном PHP вы можете использовать выходную буферизацию , как здесь:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...