2011-10-05 73 views
2

使用CakePHP,我發現我在控制器操作之間複製了一些代碼。我有十幾個操作(屬於各種控制器),都需要運行相同的查詢和相同的10個變量,以便在特定佈局中使用。他們還需要以相同的方式處理任何錯誤並呈現錯誤頁面。CakePHP - 集中控制器邏輯

我知道組​​件旨在集中控制器之間使用的邏輯,但在我的情況下,此邏輯需要訪問控制器的set()render()方法。對這種情況的建議方法是什麼?

感謝布

回答

0

端了我自己的滾動排序業務邏輯層的就這一個。下面的例子。想法/評論歡迎。

class MyController extends AppController { 

    public function my_action() { 

    // The BLL class is specific for this action and gets the entire 
    // controller so has access to the set() method as well as components. 
    $this->Bll = new MyActionLogic($this); 
    $this->Bll->do_whatever(); 
    } 
} 
0

把邏輯在你的AppController類控制器應該延長。

退房文檔:http://book.cakephp.org/view/957/The-App-Controller

+0

即使邏輯僅被我的控制器的一小部分使用? – Brian

+0

你可以有一個擴展AppController的中間類,然後在那裏有你的功能,然後你的控制器將從那個類擴展。例如MyController擴展IntermediateController擴展AppController – kand

+0

是的,除了即使在一個控制器內,只有一個動作可能需要這個功能。如果其他操作需要類似的邏輯,我將無法擴展兩個中間控制器。 – Brian