Как использовать методы из других контроллеров в Cakephp - PullRequest
0 голосов
/ 26 октября 2011

В моем приложении я использую InvoicesController, который обрабатывает создание счетов, которые могут быть получены из нескольких других моделей.После вызова некоторого метода в другом методе, который приводит к генерации нового счета, я хочу вызвать метод create () в InvoicesController, но также требуются соответствующие параметры.Я хочу централизовать это, потому что метод create () также содержит логику информирования клиента о том, что новый счет готов к оплате (с EmailComponent, так как я не могу использовать это в Модели счетов).

Любые идеиили лучшие практики для этого?

Ответы [ 4 ]

4 голосов
/ 26 октября 2011

обычно вы будете делать этот метод в модели (я имею в виду создание счета) и в контроллере до и после (получение параметров и предоставление ответа), и таким образом вы сможете легко повторно использовать создание в счете ... в любом случаеВы всегда можете использовать

App::import('Controller', 'Posts');
$post = new PostsController();
$post->myFunction();

Чтобы использовать другую функцию контроллера.

Также вы можете сделать Lib с некоторыми функциями, которые хотите использовать повторно, но в вашем случае я сделаю это смодель

Надеюсь, это поможет вам

0 голосов
/ 02 сентября 2013

Согласно http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#loading-classes работает в cakephp2.0 с

App::import('PostsController', 'Controller');
0 голосов
/ 27 октября 2011

Вы должны поместить свой повторно используемый код в метод модели!

кстати: Вы можете использовать EmailComponent в модели. Я делаю это уже много лет. С 2.0 это становится еще проще. Но в 1.3 просто используйте

$Email = new EmailComponent(new Controller()));
0 голосов
/ 26 октября 2011

Если вы используете его в других контроллерах, рассмотрите возможность помещения этой функции в app_controller, и вы всегда сможете получить к ней доступ с помощью $ this-> Function на любом другом контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...