Используя CakePHP 1.3, есть ли обратный вызов, который запускается после saveAll()
на модели или способ реализовать такое поведение?
Может быть, afterSave()
уже делает это?
В частности, я хотел бы запустить несколько конкретных методов, но только после того, как связанные элементы были сохранены и только если родительский элемент является вновь сохраненным экземпляром.
Что-то вроде аргумента $created
, переданного afterSave()
, очевидно, кажется идеальным, но я, по крайней мере, на 90% уверен, что afterSave()
вызывается на модели после первоначального сохранения – что, как я понимаю, должно произойти до того, модели сохраняются (чтобы у них было что-то в поле FK).
Что вы предлагаете для получения такого поведения?
Не существует обратного вызова для Model::saveAll()
встроенного в CakePHP, но я считаю, что вы можете переопределить этот метод на модели, чтобы создать свой собственный, например:
// In your Model class... function saveAll($data = null, $options = array()) { parent::saveAll($data, $options); $this->afterSaveAll(); // Your new custom callback. } function afterSaveAll() { // Callback code. }
В настоящее время я не уверен, как создать поведение переменной $created
аналогичное тем, что имеет Model::afterSave()
.
afterSave () как save () …
его вызов для каждой модели, saveall – это просто foreach с save (), поэтому в каждой модели вызывается функция afterSave, которая вызывается окончательной функцией save ()
Разве вы не можете просто сделать что-то вроде этого:
if($this->Recipe->saveAll($this->data)) { //Do some stuff and checking for new insert. $this->Recipe.doSomeStuff(); $this->redirect('/recipes'); }
Возможно, вы можете сказать, что это созданный элемент, потому что вы не будете передавать идентификатор. Я не знаю, потому что вы не отправили никакого кода.