Пусть одна функция контроллера вызывает другую функцию контроллера в CakePHP 1.2 - PullRequest
2 голосов
/ 01 июня 2011

Как мне заставить мой контроллер Search с функцией doSearch() внутренне вызывать функцию getTitles() в моем контроллере Titles?

Ответы [ 4 ]

8 голосов
/ 01 июня 2011

Краткий ответ: вы не должны этого делать . Вы должны перенести это в свою модель Title или, возможно, поместить в компонент или помощник для повторного использования.

Если вы уверены, что хотите вызвать контроллер напрямую, Cake предоставляет метод для этого

http://book.cakephp.org/2.0/en/controllers.html#Controller::requestAction

1 голос
/ 01 июня 2011

нет причин переходить на другой контроллер.

контроллер должен в основном вызывать методы из моделей. поэтому должна быть модель заголовка, содержащая нужный вам метод.

Разместите свой код, если вам нужна дополнительная помощь.

0 голосов
/ 04 октября 2016

Создание функциональности, в которой вы хотите повторно использовать компоненты, не всегда работает хорошо, как Cakephp, не вводит Models и find (), и устанавливает -> $ this и т. Д. Еще один путь - сделать ваши основные функции основной функцией затем вернуть $ results, вызвать эту функцию как $ results = $ this-> function_within_controller (); таким образом, вы можете повторно использовать функциональность таким образом. Я сталкиваюсь с множеством ошибок, когда иногда пытаюсь использовать компоненты, в Cakephp компоненты хороши для использования автономных скриптов php и кода.

0 голосов
/ 29 января 2015

Таким образом, ответ для дальнейшего использования:

$this->requestAction('/controller/action/params');
...