对于我的应用,我正在创建菜单。目标是:
它应该感觉像捆绑式的插件架构。在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现在可以扩展主菜单。就像把孩子添加到“根”一样。如何实现?
如果您需要更多代码,请与我们联系。