将孩子和兄弟姐妹添加到KnpMenuBundle

时间:2016-05-08 19:54:49

标签: php symfony knpmenubundle

对于我的应用,我正在创建菜单。目标是:

  • 在主要AppBundle中有一个主菜单
  • 其他捆绑包应能扩展主菜单(添加孩子和兄弟姐妹)

它应该感觉像捆绑式的插件架构。在IRC上,有人建议使用KnpMenuBundle,所以我试了一下。现在我被困了,因为我找不到扩展其他包中主菜单的方法。

在新的捆绑包中添加子菜单到主菜单需要什么?

这是我到目前为止创建的菜单和服务:

services:
  app.menu_builder:
    class: AppBundle\Menu\MenuBuilder
    arguments: ["@knp_menu.factory"]

  app.main_menu:
    class: Knp\Menu\MenuItem
    factory: ["@app.menu_builder", createMainMenu]
    arguments: ["@request_stack"]
    tags:
      - { name: knp_menu.menu, alias: main }

菜单构建器:

<?php

namespace AppBundle\Menu;


use Knp\Menu\FactoryInterface;
use Symfony\Component\HttpFoundation\RequestStack;

class MenuBuilder
{
    private $factory;

    public function __construct(FactoryInterface $factory)
    {
        $this->factory = $factory;
    }

    public function createMainMenu(RequestStack $requestStack)
    {
        $menu = $this->factory->createItem('root');
        $menu->setDisplay(false);

        return $menu;
    }
}

新的AcmeBundle现在可以扩展主菜单。就像把孩子添加到“根”一样。如何实现?

如果您需要更多代码,请与我们联系。

0 个答案:

没有答案