使用KnpMenuBundle

使用KnpMenuBundle

欢迎使用KnpMenuBundle -创建菜单很有趣!

安装

创建您的第一个菜单!

有两种创建菜单的方法:“简单”的方法,以及将菜单作为服务创建的更灵活的方法。

方法a)简单的方法(耶)!

要创建菜单,首先在菜单你的一个包的目录。这个类叫做构建器在我们的例子-将有一个方法为每个菜单,你需要构建。

构建器类的示例如下:

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
/ / src /菜单/ Builder.php名称空间应用程序菜单使用应用程序实体博客使用Knp菜单FactoryInterface使用Knp菜单ItemInterface使用ob娱乐下载组件DependencyInjectionContainerAwareInterface使用ob娱乐下载组件DependencyInjectionContainerAwareTrait最后构建器实现了ContainerAwareInterface使用ContainerAwareTrait公共函数mainMenu(FactoryInterface工厂数组,选项ItemInterface菜单工厂->createItem (“根”);菜单->addChild (“回家”, (“路线”=>“主页”]);//从容器访问服务!新兴市场->容器->get (“原则”->getManager ();// findMostRecent和Blog只是虚构的例子博客新兴市场->getRepository(博客::类)->findMostRecent ();菜单->addChild (“最新的博客”, (“路线”=>“blog_show”“routeParameters”= > [“id”=>博客->getId ()]]);//创建另一个菜单项菜单->addChild (“关于我”, (“路线”=>“大约”]);//你也可以添加子级别到你的菜单如下菜单“关于我”->addChild (“编辑资料”, (“路线”=>“edit_profile”]);/ /……添加更多的孩子返回菜单;} }

与标准knp_menu.html.twig当你的当前页面是“Home”时,你的菜单会呈现如下标记:

12 3 4 5 6 7 8 9 10 11 12 13
<ul><“当前第一”><一个href“# route_to /主页”>首页一个>><“current_ancestor”><一个href“# route_to page_show / ?id = 42”>关于我的一个><ul“menu_level_1”><“当前第一最后”><一个href“# route_to / edit_profile”>编辑配置文件一个>>ul>>ul>

请注意

您只需要实现ContainerAwareInterface如果您需要服务容器。处理依赖项的更优雅的方法是将它们注入构造函数。如果您想这样做,请参阅下面的方法。

请注意

可以使用bundle继承覆盖菜单构建器。

要实际呈现菜单,只需在任何模板中的任何位置执行以下操作:

  • 嫩枝
  • PHP
1
{{knp_menu_render(应用:建筑:mainMenu)}}

使用这个方法,您可以使用一个由三部分组成的字符串来引用菜单:方法

如果需要创建第二个菜单,只需向构建器类(如。sidebarMenu),构建并返回新菜单,然后通过渲染它应用:建筑:sidebarMenu

就是这样!菜单是<新兴市场>非常可配置的。有关详细信息,请参见<一个href="https://github.com/KnpLabs/KnpMenu/blob/master/doc/01-Basic-Menus.md" class="reference external" rel="external noopener noreferrer" target="_blank">KnpMenu文欧宝官网下载app档

显示菜单

一旦你设置好菜单,渲染就很容易了。如果你已经用了“简单”的方法,那么做下面的事情:

  • 嫩枝
  • PHP
1
{{knp_menu_render(应用:建筑:mainMenu)}}

此外,你可以传递一些选项给渲染器:

  • 嫩枝
  • PHP
1
{{knp_menu_render('App:Builder:mainMenu', {'depth': 2, 'currentAsLink': false})}}

有关选项的完整列表,请参阅<一个href="https://github.com/KnpLabs/KnpMenu/blob/master/doc/01-Basic-Menus.md" class="reference external" rel="external noopener noreferrer" target="_blank">KnpMenu文欧宝官网下载app档

你也可以“获取”一个菜单,你可以在以后使用它来渲染:

  • 嫩枝
  • PHP
1 2
{%menuItem = knp_menu_get('App:Builder:mainMenu') %}{{knp_menu_render(菜单项)}}

如果您只想检索菜单的某个分支,可以执行以下操作,其中“Contact”是根菜单项之一,并在其下面有子菜单项。

  • 嫩枝
  • PHP
1 2
{%menuItem = knp_menu_get('App:Builder:mainMenu', ['Contact']) %}{{knp_menu_render(['App:Builder:mainMenu', 'Contact'])}}

如果要向构建器传递一些选项,可以使用knp_menu_get功能:

  • 嫩枝
  • PHP
1 2
{%menuItem = knp_menu_get('App:Builder:mainMenu', [], {'some_option': 'my_value'}) %}{{knp_menu_render(菜单项)}}