【发布时间】:2014-01-15 00:50:24
【问题描述】:
我可能错了。但是当控制器将数组数据发送到视图文件时,是否可以将数组从控制器发送到 YII 中的 layout ->header.php?
【问题讨论】:
标签: layout view yii controller
我可能错了。但是当控制器将数组数据发送到视图文件时,是否可以将数组从控制器发送到 YII 中的 layout ->header.php?
【问题讨论】:
标签: layout view yii controller
public $variable;
public function actionView(){
$model = blabla::model()->findbypk($id);
$this->variable = $model->name;
$this->render('view', array('model'=>$model));
}
and then, you can use $this->variable in your layout
【讨论】:
我和你有同样的问题。需要向我的布局传递一个变量,该变量定义将在菜单中呈现哪些项目。
就我而言,我决定创建一个小部件。
我在配置文件中导入:
'import'=>array(
'application.widgets.Menu'
)
菜单类:
class Menu extends CWidget{
public function init(){}
public function run(){
$rs = Yii::db()->menus->find(array('profile' => Yii::app()->user->profile));
$this->render('menu', array(
'menus' => $rs['menus']
));
}
}
和菜单视图:
foreach($menus as $key=>$menu): ?>
<li>
<a href="<?php echo $menu['url']; ?>"><?php echo $menu['name']; ?></a>
</li>
<?php endforeach; ?>
在布局中我导入了小部件:
<ul class="menus">
$this->widget('application.widgets.Menu');
</ul>
【讨论】:
不幸的是,您不能将变量从控制器传递到布局。正如其中一位 yii 员工所提到的,它是“设计的”。但是,您可以在控制器类中声明一个变量,并通过
在布局中调用该变量your html code here ...
<h1> <?php echo $this->variableName; ?> </h1>
注意:控制器类中的变量或属性是静态的,因此这种方法没有太大的灵活性。
【讨论】: