2012-12-04 24 views
1

我有很多視圖,在很多地方使用。視圖是一樣的,但控制器不是這樣的,我將.ctp文件放在Elements目錄中,並在不同的控制器中使用以下代碼。CakePHP這個 - >渲染不加載控制器

$this->render('/Elements/overview'); 

但是,我也有一些PHP代碼需要在每次加載視圖時執行。 所以我想在Contollers目錄中創建一個名爲元素目錄(overviewController.php)中的視圖的控制器,但不幸的是,該控制器中的代碼未被執行。

有沒有辦法做到這一點,或者我這樣做是完全錯誤的?

編輯:確定隨着Dave的建議,我將overview.ctp文件複製到一個名爲Global的新目錄中。將控制器重命名爲GlobalController.php,將該類重命名爲GlobalController並更改$ this-> render。但仍然,視圖被加載,並且我用來渲染視圖的控制器被加載,但GlobalController沒有。

回答

1

爲整個視圖使用元素是不正常的。您最好使用實際的視圖文件。元素是在WITHIN Views中使用的較小的代碼塊。

實施例:

創建 'OverviewsController.php'(注意到它的PluralController.php)。內,創建一個函數:

public function overview() { 

} 

要訪問功能,使用的網址:www.yourdomain.com/overviews/overview

和視圖文件應該在Views/Overviews/overview.ctp

然後,您可以包括內的元素查看您是否打算在許多地方使用它。

編輯:

有什麼不對您發佈的代碼,但你並不需要渲染的元素 - 只呈現一個觀點:

public function anything() { 
    $this->render('/Overviews/overview'); 
} 
+0

我得到的,我用對於普通頁面。然而,這並不能解決我的問題,我想用不同的控制器多用一次 – AgeDeO

+0

編輯的答案包括從不同的動作渲染視圖。 – Dave