如何使用Cakephp中其他控制器的方法

时间:2011-10-26 12:03:15

标签: cakephp

在我的应用程序中,我使用InvoicesController来处理创建可以源自其他几个模型的发票。在另一个导致生成新发票的方法中调用某个方法之后,我想在InvoicesController中调用create()方法,但也需要相关参数。我想集中这一点,因为create()方法还包含通知客户新发票可以付款的逻辑(使用EmailComponent,因为我不能在发票模型中使用它)。

对此有何想法或最佳做法?

4 个答案:

答案 0 :(得分:4)

通常你会在模型中使用该方法(我的意思是创建发票),在控制器中使用前后(获取参数并给出答案),这样你就可以轻松地重复创建发票...无论如何你可以随时使用

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

要使用其他控制器功能。

你也可以使用你想要重复使用的一些函数来创建一个Lib,但在你的情况下,我会用模型来做这个

希望这有助于你

答案 1 :(得分:0)

如果您在其他控制器中使用它那么多,请考虑将该函数放在app_controller中,并且您始终可以使用$ this->函数在任何其他控制器中访问它。

答案 2 :(得分:0)

您应该将可重复使用的代码放在模型方法中!

顺便说一下: 您可以在模型中使用EmailComponent。我这么做多年了。使用2.0,它更容易实现。 但在1.3中只需使用

$Email = new EmailComponent(new Controller()));

答案 3 :(得分:0)

根据http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#loading-classes 它可以在cakephp2.0中使用

App::import('PostsController', 'Controller');