when I applied my own layout file to a certain action, then the page is displayed in the browser was very different from the standard: padding disappeared …
Why has this happened?
I just kind of kept main.php under a different name and did not change the path to the css-files
I remember getting the same problem when I started playing with Yii’s layout. By default, Yii uses the ‘column1’ as it’s main layout, which in turn calls the main.php. There’s an extra div on column1, which is why you see the extra padding.
If I want to use my own layout file I need to insert in controller this string = public $layout=’//layouts/my-own-layout’;, but in this case the layout file will be applied to all actions… and I want to apply it to only one action
your version of the markup can be applied or 1) to the controller as a whole (if it will be applied to all the methods of the controller), or only 2) to one of the controller methods
it should be remembered that for a particular page layout meet two files - one for each page as a whole, and one - only for content, respectively, to change the layout, we need two files:
my.php - containing doctype, html, body, etc. = It will determine the layout of the whole page
column_my.php - responsible for creating content
Here we note that column_my.php will be manages the my.php
do it:
create file my.php which prescribes all right (doctype, html, body, etc.)
create column_my.php by resaving column1.php and replace my main on the line [u]<?php $this->beginContent('//layouts/my2');?>[/u]
Option 1: use your layout to the controller as a whole = somewhere over the public function actionIndex () to insert a row public $layout = ‘//layouts/column_my’;
Option 2: apply its markup to only one controller method = method you want to insert in the line $this->layout = ‘// layouts/column_my’; or a line $this->layout = ‘column_my’;
However, you could also directly include the extra div of the column1.php in main.php (If you’re using the default Yii layout), or if you’re using your own layout, there’s no real need for 2 files IMO.
There’s a 3rd way of setting the layout - in the components/Controller.php. Since every controller that you create extends from that file, you can set a global “public $layout” in Controller.php which will apply across all controllers & actions. Unless ofcourse you have a specific layout set for a particular controller or action.