2011-10-26 184 views
0

在我的应用程序中,我使用了一个InvoicesController来处理可以来自其他几个模型的发票的创建。在通过另一种方法调用某个方法来生成新的发票后,我想调用InvoicesController中的create()方法,但也需要相关参数。我想集中这一点,因为create()方法还包含通知客户新发票已准备好付款的逻辑(使用EmailComponent,因为我无法在发票模型中使用此功能)。如何使用Cakephp中其他控制器的方法

此任何想法或最佳实践?

回答

4

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

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

要使用另一个控制器功能。

你也可以做一个lib与要重用一些功能,但在你的情况下,我会做它与模型

希望这有助于你

+1

由于api55说,你的发票应该真正在模型建立。 CakePHP的最佳实践是胖模型和瘦控制器:http://nuts-and-bolts-of-cakephp.com/2009/01/06/another-way-to-think-about-mvc/ – drmonkeyninja

0

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

0

你应该把你的可重用代码放在模型方法中!

顺便说一下: 您可以在模型中使用EmailComponent。我现在这样做了很多年。随着2.0的变得更容易这样做。 但在1.3干脆用

$Email = new EmailComponent(new Controller())); 
相关问题