如何在yii中从控制器发送数组到布局头?

时间:2013-12-27 12:12:27

标签: layout view yii controller

我可能错了。但是可以将控制器中的数组发送到YII中的布局 - > header.php 作为控制器发送数组数据来查看文件吗?

3 个答案:

答案 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>

注意:控制器类中的变量或属性是静态的,因此这种方法没有太大的灵活性。