如何从插件中添加设置

时间:2016-10-22 15:48:56

标签: cakephp-3.0

我有一个非常基本的应用程序,它使用插件来实现大多数功能。我想允许每个插件定义一些自定义菜单和菜单项,在一个地方收集所有这些菜单(可能是AppController :: initialize),并创建一个将传递给main-menu.php元素的数组,它将呈现完整的菜单。

到目前为止我所做的是定义插件中的菜单

# plugins/TestPlugin/config/bootstrap.php

use Cake\Core\Configure;
Configure::load('TestPlugin.menus', 'default' , true);

加载配置:

# src/Controller/AppController.php

public function initialize()
{
    parent::initialize();
    $plugin_menus = Configure::read('menus);

阅读变量:

menus

但如果我有更多的插件,lastObject将被覆盖。

我不确定这是不是最好的方法。我试图实现的是让多个模块更改(附加到)相同的配置变量

1 个答案:

答案 0 :(得分:0)

如果是我,我会使用生成导航的View Cell

在每个插件bootstrap.php文件中,我将该插件附加到Configure变量以添加它的导航。

Configure::write('navigation', array_merge(Configure::read('navigation'), $myNavArray);

然后在导航视图单元格中,我可以处理Configure变量。

foreach (Configure::read('navigation') as $navItem) {
    // Build nav, or output, etc
}

这样做的好处是,由于View Cell,您的导航在任何地方都是相同的。您还将拥有一个View Cell控制器,这意味着您可以在导航中执行更多操作,例如在输出导航项之前检查权限。

通过挂钩引导程序,您还可以灵活地包含或不包含插件导航,只需要不加载引导程序,然后再检查插件设置。