2011-10-26 108 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())); 
相關問題