Для моего приложения я создаю меню. Целью является:
Это должно быть похоже на архитектуру плагинов на основе пакета. На 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 теперь сможет расширять главное меню. Как добавление детей в «корень». Как этого добиться?
Пожалуйста, дайте мне знать, если вам нужно больше кода.
Задача ещё не решена.
Других решений пока нет …