首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在$content in Yii2之前在主布局页中传递全局变量

如何在$content in Yii2之前在主布局页中传递全局变量
EN

Stack Overflow用户
提问于 2014-06-02 04:37:33
回答 1查看 8.2K关注 0票数 2

我试图使用“Nav::小部件”在yii2中创建动态菜单。以下是我在主布局页面菜单部分的代码:

代码语言:javascript
复制
    echo Nav::widget([
            'options' => ['class' => 'navbar-nav navbar-right'],
            'items' => [
                ['label' => 'Home', 'url' => ['/site/index']],
                ['label' => 'About', 'url' => ['/site/about']],

试图得到解决方案:请看::

1我在app中创建了一个超级控制器"components/Controller.php“:

代码语言:javascript
复制
namespace app\components;
use app\models\MenuPanal;

class Controller extends \yii\web\Controller
{

   public $menuItems = [];

public function init(){

     $items = MenuPanal::find()
        ->orderBy('id')
        ->all();

     $menuItems = [];
     foreach ($items as $key => $value) {
                 $this->menuItems[] = ['label' => $value['c_type'] , 'url' => ['#']];
            }

   parent::init();
  }
}

2在主版面页中放置::

代码语言:javascript
复制
   echo Nav::widget([
            'options' => ['class' => 'navbar-nav navbar-right'],

            'items' => Yii::$app->controller->menuItems,

        ]);

帮助是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 14:31:46

例如,您可以创建自己的超级控制器并添加一个menuItems属性:

代码语言:javascript
复制
namespace app\components;

class Controller extends \yii\web\Controller
{
    public $menuItems = [
        ['label' => 'Home', 'url' => ['/site/index']],
        ['label' => 'About', 'url' => ['/site/about']]
    ];
}

您的控制器应该扩展它:

代码语言:javascript
复制
namespace app\controllers;

use app\components\Controller;

class MyController extends Controller {...}

在你的布局中:

代码语言:javascript
复制
echo Nav::widget([
    'options' => ['class' => 'navbar-nav navbar-right'],
    'items' => Yii::$app->controller->menuItems,
]);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23987416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档