在我的应用程序中,我使用了一个InvoicesController来处理可以来自其他几个模型的发票的创建。在通过另一种方法调用某个方法来生成新的发票后,我想调用InvoicesController中的create()方法,但也需要相关参数。我想集中这一点,因为create()方法还包含通知客户新发票已准备好付款的逻辑(使用EmailComponent,因为我无法在发票模型中使用此功能)。如何使用Cakephp中其他控制器的方法
此任何想法或最佳实践?
在我的应用程序中,我使用了一个InvoicesController来处理可以来自其他几个模型的发票的创建。在通过另一种方法调用某个方法来生成新的发票后,我想调用InvoicesController中的create()方法,但也需要相关参数。我想集中这一点,因为create()方法还包含通知客户新发票已准备好付款的逻辑(使用EmailComponent,因为我无法在发票模型中使用此功能)。如何使用Cakephp中其他控制器的方法
此任何想法或最佳实践?
通常你会在模型中(我的意思是创建发票)和控制器中的前后(获取参数并给出答案)这样的方法,这样你就可以轻松地重用创建控件的发票......无论如何,你总是可以使用
App::import('Controller', 'Posts');
$post = new PostsController();
$post->myFunction();
要使用另一个控制器功能。
你也可以做一个lib与要重用一些功能,但在你的情况下,我会做它与模型
希望这有助于你
如果你使用它,许多在其他控制器,请考虑将该函数放入app_controller中,并且您将始终可以使用任何其他控制器中的$ this-> Function来访问它。
你应该把你的可重用代码放在模型方法中!
顺便说一下: 您可以在模型中使用EmailComponent。我现在这样做了很多年。随着2.0的变得更容易这样做。 但在1.3干脆用
$Email = new EmailComponent(new Controller()));
根据http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#loading-classes 它工作在cakephp2.0与
App::import('PostsController', 'Controller');
由于api55说,你的发票应该真正在模型建立。 CakePHP的最佳实践是胖模型和瘦控制器:http://nuts-and-bolts-of-cakephp.com/2009/01/06/another-way-to-think-about-mvc/ – drmonkeyninja