id4v/menu-bundle

菜单组件,允许您轻松创建和通过 SonataAdminBundle 管理菜单

安装次数: 1,981

依赖项: 1

建议者: 0

安全性: 0

星标: 1

关注者: 3

分支: 2

开放问题: 3

类型:symfony-bundle

2.0.4 2015-09-29 12:15 UTC

This package is not auto-updated.

Last update: 2024-09-11 15:49:22 UTC


README

SensioLabsInsight

MenuBundle

Id4vMenuBundle 是一个用于轻松管理菜单的 Symfony2 组件

工作原理

菜单是一棵菜单项树

菜单项是

  • 用于显示的标签
    • 可选的显示图标
  • 点击时跳转的链接

安装

1 使用 composer 安装它

composer require id4v/menu-bundle

2 在您的 AppKernel.php 文件中激活组件

public function registerBundles()
    {
        $bundles = array(
        ...
        # if you haven't already this bundle
        new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
        ...
        new \Id4v\Bundle\MenuBundle\Id4vMenuBundle(),
        ...
        );
        return $bundles
    }

3 在您的 config.yml 文件中添加此必需的 StofDoctrineExtensionsBundle 配置

stof_doctrine_extensions:
    orm:
        default:
            sluggable: true

4 在 sonata admin 配置中注册 id4v_menu.admin.menu 服务

5 完成!

用法

####在您网站的 admin 中创建您的菜单。

####通过添加菜单项,拖放它们来组织菜单

####在 twig 模板中渲染菜单

####实现示例

{{ knp_menu_render("app.menu.main", {template: "Id4vMenuBundle:Menu:main.html.twig"}) }}

{{ knp_menu_render("app.menu.main", {template: "menu:main.html.twig"}) }}

有关此标签的所有文档可在此处查看: KnpMenuBundle

已添加一个基本构建器以帮助创建菜单的常见用法,即 BaseMenuBuilder.php 类。

首先,您的构建器的基本声明可以是

namespace AppBundle\Menu;

use Knp\Menu\FactoryInterface;
use Doctrine\ORM\EntityManager;
use Id4v\Bundle\MenuBundle\Builder\BaseMenuBuilder;

class AppMenuBuilder extends BaseMenuBuilder
{
    public function __construct(FactoryInterface $factory, EntityManager $em)
    {
        parent::__construct($factory, $em);
    }

    public function createMainMenu()
    {
        return $this->getSimpleMenu('main-menu');
    }
}

现在您可以声明您自己的服务

services:
    app.menu_builder:
        class: AppBundle\Menu\AppMenuBuilder
        arguments: ["@knp_menu.factory", "@doctrine.orm.entity_manager"]

    app.menu.main:
        class: Knp\Menu\MenuItem # the service definition requires setting the class
        factory: ["@app.menu_builder", createMainMenu]
        arguments: ["@request_stack"]
        tags:
            - { name: knp_menu.menu, alias: app.menu.main }

您可以在 KnpMenuBundle 文档 中查看此声明的文档。

此外,您可以根据需要激活或调整 URI 匹配器。

services:
    app.voter.regex:
        class: Id4v\Bundle\MenuBundle\Matcher\Voter\UriVoter
        arguments: ["@request_stack"]
        tags:
            - { name: knp_menu.voter }

Sonata Admin

有时您的菜单中会有一个庞大的树。管理性能可能会受到影响。这就是为什么现有配置与组件一起存在的原因。

默认情况下,您只能拖放两层深度。如果您想更改它,请修改 menu_depth 节点。

默认配置

id4v_menu:
    admin:
        menu_depth: 2