【问题标题】:CAkePHP calling one controller action from a different controllerCAkePHP 从不同的控制器调用一个控制器动作
【发布时间】:2010-09-21 12:11:27
【问题描述】:
在我的应用中,我想在用户每次收到对图像或其他页面的评论时添加用户通知。因此,在我的图像控制器中的添加操作中,我还想调用我的通知控制器中的 addNotifications 操作。我试图根据警告远离 requestAction,但还有其他方法吗?
工作流程是这样的:
发生新事件 -> 触发在通知表中添加通知 -> 通知存在的电子邮件用户。
【问题讨论】:
标签:
model-view-controller
cakephp
controllers
【解决方案1】:
如果它将成为各种事情的通知,那么我会考虑在app_controller 中提供一些内容,因为这将使它在您的整个应用程序中都可用。这意味着你可以调用类似的东西
$this->Notify($user['User']['email'], 'MyNotifyType', 'MyTemplateName');
然后您可以处理应用控制器通知功能中的其他位。您可能需要将您的用户模型添加到您的 app_controller,这可能很棘手。
我会尝试使用uses(),因为如果你想说包括用户上次登录详细信息、用户名或正式问候语等,这可以让你添加模型,从而从你的 app_controller 中提取用户数据。http://api.cakephp.org/class/controller
【解决方案2】:
如果要调用基于另一个模型的方法,则需要将其放在模型类中,因此在您的示例中位于 Notification 模型中。然后你可以从你的图像控制器调用它
$this->Image->Notification->add($params);
如果模型是关联的。如果不是,您可以即时连接它们,也可以按照之前的建议在 appController 中添加函数(这并不完美,因为 AppController 中的函数不应该依赖于某个模型,而是通用的)