2014-03-24 5 views
5

Individuell bin ich in der Lage mit Hilfe controller.For Beispiel cakephp Standard-Layout zu ändern, die ichWie cakephp default.ctp Layout-Verzeichnis zu ändern?

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

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

Hier habe ich geändert Layout !! Aber das Problem ist, dass dieses Layout nicht Standard ist. Ich möchte dieses Layout für alle Controller anwenden. Wie kann ich das tun?

+0

tun Sie es in Ihrem AppController – arilia

+0

Details bitte.In AppController wie? –

Antwort

11

In Ihrem AppController

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

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

Diese Antwort ist perfekt, aber in Version 3.4 (wie ich verwende) ist dies veraltet, Sie müssen $ this-> viewBuilder() -> setLayout ("benutzerdefinierte") -Methode verwenden, um Ihr Layout festzulegen. –

1

Diese Antwort in CakePHP 3.0.5 gelten nicht mehr kann. Es erfordert ein Ereignisobjekt als Argument in der Funktion beford.Render().

Versuchen Sie, die Eigenschaft $ layout im Controller selbst zu ändern.

public $layout = 'non-default' 

wird das Layout von allen Ansichten durch den Controller src/Template/Layout/Nicht-default.ctp

2

Ab CakePHP 3.1 Ansichtslayouts haben definiert verwendet ändern geändert:

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

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