我可能错了。但是可以将控制器中的数组发送到YII中的布局 - > header.php 作为控制器发送数组数据来查看文件吗?
答案 0 :(得分:2)
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
答案 1 :(得分:2)
我和你有同样的问题。需要传递一个变量来定义哪些项目将在菜单中呈现。
在我的情况下,我决定创建一个Widget。
我在配置文件中导入了:
'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>
答案 2 :(得分:1)
不幸的是,您无法将变量从控制器传递到布局。这是yii工作人员之一提到的“按设计”。但是,您可以在控制器类中声明一个变量,并通过
在布局中调用该变量your html code here ...
<h1> <?php echo $this->variableName; ?> </h1>
注意:控制器类中的变量或属性是静态的,因此这种方法没有太大的灵活性。