Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Yii: Render action using different layout than controller's layout

Tags:

In Yii, is there a way to render a single action using a different layout than that defined for the controller? I have an action that I would like to format differently from the rest, and it's not clear from the documentation if that's possible.

like image 837
Matt Hampel Avatar asked Jun 07 '11 14:06

Matt Hampel


1 Answers

I believe on that action you could just call the $layout variable.

public function actionYourAction() {     $this->layout = 'nameOfYourAltLayout'; } 

The instructions in the link below indicate that you will have to set this variable for every action since you can't just set the default public variable and expect the other actions to default back to this.

http://www.yiiframework.com/wiki/28/how-to-implement-multiple-page-layouts-in-an-application/

::Edit::

It seems the best practice here is to define the $layout variable in the view script for the particular action that calls it. For example, if your action calls viewscriptone.php then the viewscriptone view file would contain:

$this->layout = 'nameOfYourAltLayout'; 

It makes more sense to override here rather than in the controller action. However, as LDG said, if the layout is conditional you should probably keep it in the controller. This information can still be found in the link above under the "Using Layouts" section of the page.

like image 111
k to the z Avatar answered Dec 18 '22 01:12

k to the z