Question

In PHP Lithium, how to change default layout? I have two layouts for different views, and I want to switch them in different views, how can I make this happen?

Thanks.

Was it helpful?

Solution

You switch the layout in the controller. So when you are done in the controller you call render this way.

return $this->render(array('layout' => 'someFancyLayout'));

You should also be able to do this in your controller. I'm not sure but you might need to extend the Controller to use this way.

 $this->_render['layout'] = 'someFancyLayout';

Please note that you can also set up custom media handlers. This is for instance used when requestting GPX-files and in that case I do not which to use a layout.

Media::type('gpx', 'application/text', array(
    'view' => 'lithium\template\View',
    'layout' => false,
    'template' => false
));

And you can also do it with a filter on the renderer call:

Media::applyFilter('render', function ($self, $params, $chain) {
    $params['options']['layout'] = 'default';
    if (someCondition == isMet) {
        $params['options']['layout'] = 'anotherLayout';
    }
    return $chain->next($self, $params, $chain);
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top