2008-09-25 33 views
4

我有兩個控制器共享他們的大部分代碼(但必須是不同的控制器)。 (對我來說,至少)明顯的解決方案是創建一個類,並使兩個控制器繼承它。事情是......放在哪裏?現在我已經在app_controller.php中,但它有點混亂。將CakePHP中的控制器父類放在哪裏?

回答

9

在蛋糕中,組件用於存儲可由多個控制器使用的邏輯。該目錄是/ app/controllers/components。例如,如果您有一些可共享的實用程序邏輯,您可能會有一個名爲UtilComponent的對象和一個名爲UtilComponent.php的/ app/controlers/components中的文件。

<?php 
class UtilComponent extends Object { 
    function yourMethod($param) { 
     // logic here....... 

     return $param; 
    } 
} 
?> 

然後,在你的控制器類,你可以這樣:

var $components = array('Util'); 

然後調用類的方法:

$this->Util->yourMethod($yourparam); 

更多信息:

Documentation

4

順便說一句,如果「他們必須是單獨的控制器」的原因是你需要的URL。請記住,您可以使用路由:

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index')); 
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments')); 
+0

不,它不是真的,它只是代碼中有一點區別,但是謝謝:) – paradoja 2008-09-26 11:54:30

相關問題