Когда я сохраняю данные в одной модели, я хотел бы создать некоторые данные в другой модели и сохранить их тоже.Поскольку я не могу сделать это с помощью beforeSave () , я в конечном итоге решил использовать afterSave () для создания новых элементов данных в моей второй модели.Я не пишу приложение для блога, но для использования аналогии с блогом это эквивалентно автоматическому созданию серии комментариев для каждого добавляемого сообщения в блоге и, когда сообщение редактируется, удалению всех комментариев и повторному добавлению новых комментариев:
class Post extends AppModel {
function afterSave() {
ClassRegistry::init('Comments')->deleteAll(array('Post.id' => $this->id));
ClassRegistry::init('Comments')->saveAll($comments); // comments contains the comments to be added
}
}
Это прекрасно работает, за исключением того факта, что функция afterSave () вызывает перенаправление действий добавления / редактирования моего контроллера (на /posts/index
), и меня перенаправляют обратно на добавление.Вместо этого используйте форму / edit (если я закомментирую весь метод afterSave (), перенаправление работает как задумано).
Если вам интересно, почему я не поместил логику в контроллер, я сделал изначально,но я хочу, чтобы он работал как для добавления, так и для редактирования действий, а также для «пакетного» действия добавления, которое я использую для добавления нескольких «сообщений» одновременно.
Я думаю, у меня есть два вопроса:
Спасибо, что прочитали это далеко, и если я не объяснил это ясно, я надеюсь, что вы можетеИспользуйте свое воображение, чтобы увидеть, что я пытаюсь сделать.