Difference between #3 and #4 of
pass variables or content block from view file to layout file

Revision #4 has been created by Maurizio Domba Cerin on Oct 27, 2012, 6:35:41 PM with the memo:

code style
« previous (#3)


Title unchanged

pass variables or content block from view file to layout file

Category unchanged


Yii version unchanged

Tags unchanged

CClipWidget, layouts

Content changed

iIf you use yiic to generate webApplication there will bexists a layouts di folder under the protected/views/, and the Controller class under protected/components which will use by default use these layouts files . aAll your controllers may extends the Controller base class directly or indirectly . pPlease look at thisat class, you may find this lines : ```php /**      * @var string the default layout for the controller view. Defaults to '//layouts/column1',      * meaning using a single column layout. See 'protected/views/layouts/column1.php'.     */
public $layout = '//layouts/column1';     /**      * @var array context menu items. This property will be assigned to {@link CMenu::items}.     */
public $menu = array();     /**      * @var array the breadcrumbs of the current page. The value of this property will      * be assigned to {@link CBreadcrumbs::links}. Please refer to {@link CBreadcrumbs::links}      * for more details on how to specify this property.     */
public $breadcrumbs = array(); ``` these variables will be shared by all its subClasses (may be your whole XXXController of your project ) ). except the $layout variable the other two usually used to pass variables to layout files : ```php $this->breadcrumbs=array(     'Albums'=>array('index'),     'Manage', ); $this->menu=array(     array('label'=>'List Album','url'=>array('index')),     array('label'=>'Create Album','url'=>array('create')), ); ``` iIf you use gii to generate crud functionality you may see such code in the top section of file (admin.php, index.php, create.php, update.php, view....). "$this" represent the current controller , so "breadcrumbs" and "menu" are the member variables of controller and
it defined in "Controller" class .   n
ow lets take look at layout file "column2":

<?php $this->beginContent('//layouts/main'); ?>
)); ?><!-- breadcrumbs -->
<?php endif?>

so you can see the "$this->menu " and "$this->breadcrumbs" are assigned in view files (create.php, index.php, admin.php ....) ;
2 0
Viewed: 23 754 times
Version: 1.1
Category: How-tos
Written by: yiqing95
Last updated by: Maurizio Domba Cerin
Created on: Oct 26, 2012
Last updated: 5 years ago
Update Article


View all history