オーバーヘッドをあまりかけずにこれを実現する唯一の方法は、KnpLabs/KnpMenuBundleを使用することです。
global.html.twig で:
<ul class="nav">
{{ knp_menu_render('YourModule1Bundle:MenuBuilder:module1Menu', {'currentClass': 'active'}) }}
{{ knp_menu_render('YourModule2Bundle:MenuBuilder:module2Menu', {'currentClass': 'active'}) }}
{{ knp_menu_render('YourModule3Bundle:MenuBuilder:module3Menu', {'currentClass': 'active'}) }}
</ul>
Module1 バンドル ディレクトリ内:
Menu
フォルダを作成する
- 次のように作成
MenuBuilder.php
します。
-
<?php
namespace YourMenu1Bundle\Menu;
use Knp\Menu\FactoryInterface;
use Symfony\Component\DependencyInjection\ContainerAware;
class MenuBuilder extends ContainerAware
{
public function applicationMenu(FactoryInterface $factory, array $options)
{
$rootMenu = $factory->createItem('rootMenu');
$rootMenu->setChildrenAttributes(array('class' => 'nav'));
$rootMenu->setCurrentUri($this->container->get('request')->getRequestUri());
$menu = $rootMenu->addChild('Module 1', array('route' => 'the_wanted_route'));
return $rootMenu;
}
}