如何在cakephp中的另一个控制器中调用Controller动作?

时间:2011-07-07 05:32:18

标签: cakephp cakephp-1.3 cakephp-1.2

我想在另一个控制器(事件控制器)中使用“getpoll”,这是用户控制器的动作。

我该如何使用它?

提前感谢...给所有人......

4 个答案:

答案 0 :(得分:4)

您可以使用控制器的requestAction方法:

$this->requestAction('/comments/latest');

你可以根据你的需要不同地调用它来查找链接:

CookBook的链接:Controller requestAction Method

答案 1 :(得分:3)

您应该将getPoll()操作的数据库查询作为投票模型中的方法编写,这样在您的用户控制器中,您只需调用$this->User->Poll->getPolls()即可获取轮询,如果关联设置正确,则从事件控制器$this->Event->Poll->getPolls()开始。

例如,在您的投票模型中:

public function getPoll($userId = null) {
    return $this->find('all', array(..));
}

答案 2 :(得分:2)

您可以在带有组件的控制器之间共享一段共同的代码。

http://book.cakephp.org/view/994/Introduction

答案 3 :(得分:0)

食谱说:

  

如果在没有缓存的情况下使用requestAction可能会导致性能不佳。它很少适用于控制器或模型。   http://book.cakephp.org/2.0/en/controllers.html

this 帖子显示了一种不同且更好的方法