diabl0 / config-knp-menu-bundle
使用yaml文件配置项目包中的knp菜单
0.9.4
2019-11-24 10:20 UTC
Requires
- knplabs/knp-menu-bundle: dev-master
- symfony/event-dispatcher: ^4.0 | ^5.0
- symfony/yaml: ^4.0 | ^5.0
Requires (Dev)
- phpunit/phpunit: ~5.0
- squizlabs/php_codesniffer: ~2.5
README
简介
此包提供了一种通过yaml配置文件配置knp菜单的方式。
有关knp菜单的更多信息,请阅读
此包受到了OroNavigationBundle和jbouzekri/ConfigKnpMenuBundle的启发
安装
您可以使用composer进行安装。
composer require diabl0/config-knp-menu-bundle
文档
为了使用此包,您必须在您的配置(通常位于/config/packages/navigation.yaml)中的navigation.yaml文件中定义您的菜单配置。如果您使用Flex,此配置会为您创建。
格式
# Default configuration for extension with alias: "config_knp_menu" config_knp_menu: menu: name: tree: # Prototype name: route: ~ routeParameters: [] uri: ~ label: ~ display: true displayChildren: true order: ~ attributes: [] linkAttributes: [] childrenAttributes: [] labelAttributes: [] roles: [] extras: [] children: # Prototype name: route: ~ routeParameters: [] uri: ~ label: ~ display: true displayChildren: true order: ~ attributes: [] linkAttributes: [] childrenAttributes: [] labelAttributes: [] roles: [] extras: [] children:
示例
config_knp_menu: menu: # main menu my_mega_menu: tree: home: label: Home route: index one: label: One attributes: icon: fa-award children: oo: label: Eleven route: app_one extras: routes: - app_one_list - app_one_edit - app_one_new ot: label: Twelfe uri: "#12"
它将配置一个knp菜单工厂的提供者。然后您可以在twig中使用my_mega_menu作为经典的knp菜单。
{{ knp_menu_render('my_mega_menu') }}
配置
这是项目的一个可用配置定义。
menu_key: uri: "An uri. Use it if you do not define route parameter" route: "A sf2 route without @" routeParameters: "an array of parameters to pass to the route" label: "My first label" order: An integer to sort the item in his level. attributes: An array of attributes passed to the knp item. You can use it to pass additional data to twig template like icons, styles etc. linkAttributes: An array of attributes passed to the a tag childrenAttributes: An array of attributes passed to the children block labelAttributes: An array of attributes passed to the label tag display: boolean to hide the item displayChildren: boolean to hide the children roles: array of item (string roles) passed to isGranted securityContext method to check if user has rights in menu items extras: An array of extra parameters (for example icon img, additional content etc.) children: # An array of subitems second_level_item: label: My second level
此配置与Knp MenuItem类的可用方法相匹配
菜单安全
安全上下文注入到菜单项提供者中。
对于根菜单项,在您的twig模板中显示或隐藏它。对于子项,如果没有添加roles键,则将显示。否则,它将传递键数组到isGranted方法,并检查您是否有权限访问该项。
面包屑
简单示例
<ul> {% for breadcrumb_item in knp_menu_get_breadcrumbs_array(knp_menu_get_current_item('main')) %} <li class="m-nav__item"> {% if breadcrumb_item.uri is not empty %} <a href="{{ breadcrumb_item.uri }}"> {% endif %} <span class="m-nav__link-text">{{ breadcrumb_item.label }}</span> {% if breadcrumb_item.uri is not empty %} </a> {% endif %} </li> {% endfor %} </ul>