Как вызвать действие контроллера в другом контроллере в cakephp? - PullRequest
5 голосов
/ 07 июля 2011

Я хочу использовать "getpoll", который является действием контроллера пользователя, в другом контроллере (контроллере событий).

Как я могу его использовать?

заранее спасибо ...для всех ...

Ответы [ 4 ]

4 голосов
/ 07 июля 2011

Вы можете использовать метод requestAction контроллера:

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

Вы можете назвать его по-разному, в зависимости от ваших потребностей, для получения дополнительной информации перейдите по ссылке:

Ссылка на CookBook: Запрос контроллера. Метод действия

3 голосов
/ 07 июля 2011

Вы должны написать db-запрос действия getPoll() как метод в опросе model , так что в вашем пользовательском контроллере вы можете просто вызвать $this->User->Poll->getPolls(), чтобы получить опросы, и если ассоциации $this->Event->Poll->getPolls() настроены правильно с вашего контроллера событий.

Например, в вашей модели опроса:

public function getPoll($userId = null) {
    return $this->find('all', array(..));
}
2 голосов
/ 07 июля 2011

Вы можете поделиться общим фрагментом кода между контроллерами с компонентами.

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

0 голосов
/ 28 июля 2013

Кулинарная книга гласит:

При использовании без запроса кэширования действие может привести к снижению производительности.Это редко подходит для использования в контроллере или модели.http://book.cakephp.org/2.0/en/controllers.html

И этот пост показывает другой и лучший подход

...