2014-03-24 68 views
5

獨立,我能夠通過使用controller.For例如更改CakePHP默認佈局我用如何更改cakephp default.ctp佈局目錄?

public function login() { 
    $this->layout="make"; //here I have changed layout for single action 

     if ($this->request->is('post')) { 
      //some code... 
     } 
    } 

在這裏,我已經改變了佈局!但問題是這種佈局不是默認的。我想將這個佈局應用於所有控制器。我該怎麼做?

+0

請在您的AppController – arilia

+0

中詳細說明。在AppController中如何? –

回答

11

在你的AppController

public function beforeRender() { 
    parent::beforeRender(); 

    $this->layout = 'custom'; 
} 
+1

這個答案是完美的,但在3.4版本(因爲我使用),這是不贊成,你必須使用$ this-> viewBuilder() - > setLayout(「自定義」)方法來設置您的佈局。 –

1

這個答案可能不再CakePHP中3.0.5適用。它需要事件對象作爲beforeRender()函數中的一個參數。

嘗試更改控制器本身的$ layout屬性。

public $layout = 'non-default' 

將改變通過控制器爲src /模板/佈局/非default.thtml中

2

作爲CakePHP的3.1的定義的所有視圖中使用的佈局,視圖佈局已經改變:

// In a controller, instead of 
$this->layout = 'advanced'; 

// You should use 
$this->viewBuilder()->layout('advanced');