代码之家  ›  专栏  ›  技术社区  ›  Andy

CakePHP 3.x-更改特定控制器的边栏

  •  0
  • Andy  · 技术社区  · 7 年前

    我在CakePHP 3.5.13中有一个应用程序,它有一个左手导航菜单。

    Template/Layout/default.ctp 我有这个:

    <body>
        <?= $this->element('left_sidebar', ['lh_menu' => $lh_menu, 'cache' => true]);?>
    
        <?= $this->fetch('content') ?>
    </body>
    

    Template/Element/left_sidebar.ctp 在每一页上。它还允许我传入一些数据( $lh_menu

    // src/Controller/AppController.php
    public function beforeFilter(Event $event) 
    {
        // $lh_menu is some data from a DB used to populate a navigation menu
        $this->set('lh_menu', $lh_menu);
    }
    

    我最近添加了一个新的控制器(称为 SubstanceViewController.php )想用不同的左手菜单( Template/Element/substance_sidebar.ctp )对于控制器内的所有功能。我读过关于使用 View Blocks 但这些例子并没有说明如何将这些函数与控制器函数联系起来使用,也不清楚文档中的代码将放在何处。

    substance_sidebar.ctp 通过

    1 回复  |  直到 7 年前
        1
  •  1
  •   Greg Schmidt    7 年前

    我的建议是加一个 beforeFilter 在您的 SubstanceViewController ,这将 set 布局检查的标志。

    $this->set('use_substance_sidebar', true);
    parent::beforeFilter($event);
    

    在布局中:

    if (isset($use_substance_sidebar) && $use_substance_sidebar) {
        ...
    }
    
    推荐文章