定制 m4y4-dev/symfony-menu 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

m4y4-dev/symfony-menu

最新稳定版本:v1.0.2

Composer 安装命令:

composer require m4y4-dev/symfony-menu

包简介

README 文档

README

Simple way to use access-restricted menu in a symfony application

Use with composer:

Add to composer.json

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/m4y4-dev/symfony-menu.git"
    }
]

Run:

composer require m4y4-dev/symfony-menu:^1.0

Add to your symfony application

Add to app/service.yml

(only required if autoconfigure = false)

menu_collection:
    class: Symfony\Menu\MenuCollection
    arguments: ["@request_stack", "@security.access_map", "@router", "@security.authorization_checker", "AppBundle/Menu"]

Make the menus available in twig by adding service to twig globals in app/config.yml

Example:

twig:
    debug: '%kernel.debug%'
    strict_variables: '%kernel.debug%'
    globals:
        menus: "@menu_collection"

Add your menus to src/{BundleName}/Menu/

Example:

<?php

namespace AppBundle\Menu;

use Symfony\Menu\Menu;

class MainMenu extends Menu
{
    protected $items = [
        [
            'name' => 'Dashboard',
            'icon' => '<i class="icon-home"></i>',
            'path' => 'homepage',
        ],
        [ 
            'name' => 'Link x',
            'icon' => '<i class="icon-diamond"></i>',
            'path' => 'path-to-x',
        ],
        [
            'name' => 'A hidden entry',
            'icon' => '',
            'path' => 'another-path',
            'visible' => false,
        ],
        [
            'name' => 'An entry with submenu',
            'icon' => '<i class="icon-diamond"></i>',
            'path' => '',
            'submenu' => SubmenuMenu::class,
        ],
    ];
}

?>

Use in twig template as follows:

{% from 'macro/sidebarMenu.html.twig' import sidebarMenu %}

<ul id="Menu">
    {% for item in menus.MainMenu %}
        {{ sidebarMenu(item, loop) }}
    {% endfor %}
</ul>

Content of macro/sidebarMenu.html.twig:

{% macro sidebarMenu(item, loop) %}{% spaceless %}
    {% from _self import sidebarMenu %}

    {% if isVisible %}
        <li>
            <a{% if item.target|default %} target="{{ item.target }}"{% endif %} href="{% if item.path|default %}{{ url_decode(item.path) }}{% elseif item.link|default %}{{ item.link }}{% endif %}">
                {{ item.icon|raw }}{{ item.name }}
            </a>
        </li>
    {% endif %}
{% endspaceless %}{% endmacro %}

If you want to use access-control, simply add your routes to app/security.yml

Example:

access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin, roles: ROLE_ADMIN }
    - { path: ^/, roles: ROLE_USER }

统计信息

  • 总下载量: 1.09k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2018-09-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固