diabl0/config-knp-menu-bundle

使用yaml文件配置项目包中的knp菜单

安装: 836

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 12

类型:symfony-bundle

0.9.4 2019-11-24 10:20 UTC

This package is auto-updated.

Last update: 2024-09-24 20:28:13 UTC


README

Build Status SensioLabsInsight

简介

此包提供了一种通过yaml配置文件配置knp菜单的方式。

有关knp菜单的更多信息,请阅读

此包受到了OroNavigationBundlejbouzekri/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>