CAkePHP вызывает одно действие контроллера из другого контроллера - PullRequest
1 голос
/ 21 сентября 2010

В моем приложении я хочу добавлять уведомление пользователя каждый раз, когда пользователь получает комментарий к изображению или другой странице. Поэтому в моем действии добавления в моем контроллере изображений я также хотел бы вызвать действие addNotifications, которое находится в моем контроллере уведомлений. Я пытаюсь держаться подальше от requestAction, основываясь на предупреждениях, но есть ли другой способ?

Рабочий процесс такой: Происходит новое событие -> инициировать добавление уведомления в таблицу уведомлений -> пользователю электронной почты, что уведомление существует.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2010

Если вы хотите вызвать метод, основанный на другой модели, вам нужно поместить его в класс модели, как, например, в модели уведомлений. Затем вы можете вызвать его из вашего контроллера изображений с помощью

$this->Image->Notification->add($params);

если модели связаны. Если это не так, вы можете подключить их «на лету» или перейти к предыдущему предложению и добавить функцию в appController (что на самом деле не идеально, поскольку функции в AppController не должны зависеть от определенной модели, а должны быть общими)

0 голосов
/ 21 сентября 2010

Если это будет уведомление для всех видов вещей, то я бы рассмотрел что-то в app_controller, так как это сделает его доступным для всего вашего приложения.Это означает, что вы сможете вызывать что-то вроде

$this->Notify($user['User']['email'], 'MyNotifyType', 'MyTemplateName');

Тогда вы сможете работать с другими битами в функции уведомления контроллеров вашего приложения.Возможно, вам понадобится добавить вашу модель User в ваш app_controller, что может быть сложно.

Я бы попробовал использовать uses(), так как это может позволить вам добавить модель и таким образом извлечь пользовательские данные из вашего app_controller, если вы хотитескажем, включает в себя данные о последнем входе в систему, имя пользователя или официальное приветствие и т. д. http://api.cakephp.org/class/controller

...