简体   繁体   中英

Assigning Layout in cakephp

Can we define a Layout for whole controller in that particular controller?I have used before filter of the appcontroller for this purpose earlier but it doesnt solves it any more.So i need that there should be some definition of layout in controller that would apply for all the actions of that controller.

Regards

use it:

inside your action

$this->layout = 'mylayout';

you have to create that layout in view/layout/mylayout.ctp

or add this function to controller to set layout for each action of controller

  function beforeFilter() {
    parent::beforeFilter();
        $this->layout = 'mylayout';
  }

The best way to do some thing like this

var $layout = 'my_account';

This will apply to your entire controller. After adding this code it will look something like this.

class MyAccountsController extends AppController {
    var $name = 'MyAccounts';
    var $components = array('Email');
    var $layout = 'my_account';

If you do not want to use some of the action you can explicitly define in your action like this

function my_action(){
    $this->layout = 'another_layout';
}

Now this my_action will take another layout and rest of the action will take my_account layout

For CakePHP 3.0 Red Velvet

Layout file location:

在此输入图像描述

New param:

$this->viewBuilder()->layout("loginUI");

*"loginUI" is file name layout

Yes we can. You just need to create your layout file under Template>>Layout>>yourlayout.ctp Then load this layout along with the Controller by:

class MyController extends AppController {
    public function initialize(){
        parent :: initialize();
        $this->layout = "yourlayout";

      }
}

this will automatically implement this layout as default for the Controller. you might want to use $this->viewBuilder->layout("yourlayout"); inside the initialize() but it leads to error "Call to member function layout() on boolean". So instead you can use the former.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM