【问题标题】:how to send array from controller to layout header in yii?如何将数组从控制器发送到 yii 中的布局标题?
【发布时间】:2014-01-15 00:50:24
【问题描述】:

我可能错了。但是当控制器将数组数据发送到视图文件时,是否可以将数组从控制器发送到 YII 中的 layout ->header.php

【问题讨论】:

    标签: layout view yii controller


    【解决方案1】:
    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
    

    【讨论】:

    • 我可以要求更多地描述它吗?布局是网站的整个页面,视图是其中的一部分,那么如何在该视图部分之外使用该数组,例如在侧边栏或页眉或页脚中?
    【解决方案2】:

    我和你有同样的问题。需要向我的布局传递一个变量,该变量定义将在菜单中呈现哪些项目。

    就我而言,我决定创建一个小部件。

    我在配置文件中导入:

    '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>
    

    【讨论】:

      【解决方案3】:

      不幸的是,您不能将变量从控制器传递到布局。正如其中一位 yii 员工所提到的,它是“设计的”。但是,您可以在控制器类中声明一个变量,并通过

      在布局中调用该变量
      your html code here ...
      
         <h1> <?php echo $this->variableName; ?> </h1>
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-16
        • 2014-02-11
        • 1970-01-01
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多