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.
相关问题
- Views base64 encoded blob in HTML with PHP
- Laravel Option Select - Default Issue
- PHP Recursively File Folder Scan Sorted by Modific
- Can php detect if javascript is on or not?
- Using similar_text and strpos together
That wiki entry does a pretty good job in describing how to use layouts, definitely worth a read. I do think you can set a layout default at the start of your controller class and then override that within a particular action function without having to define layout in each action, at least it's worked for me. You can also use the beforeAction function for any complex situations. And, as you may already know, you can use renderPartial to bypass the layout entirely.
I believe on that action you could just call the
$layout
variable.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 callsviewscriptone.php
then the viewscriptone view file would contain: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.