开发者

Assigning Layout in cakephp

Can we define a Lay开发者_高级运维out 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:

Assigning Layout in cakephp

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜