承接 xiidea/easy-menu-acl-bundle 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

xiidea/easy-menu-acl-bundle

最新稳定版本:1.0.0

Composer 安装命令:

composer require xiidea/easy-menu-acl-bundle

包简介

Role Based Access filter for Symfony2 KnpMenuBundle

README 文档

README

A Symfony2 Bundle To Power up KnpMenuBundle. This bundle can be user to register menu with simple configuration. or can be used with zero configuration to filter menus as per security access level.

Note: If you are using Symfony version older then 2.6 you need to use EasyMenuAclBundle 1.x

Install

  1. Add EasyMenuAclBundle in your composer.json
  2. Enable the Bundle
  3. Configure config.yml(Optional)

1. Add EasyMenuAclBundle in your composer.json

Add EasyMenuAclBundle in your composer.json:

{
    "require": {
        "xiidea/easy-menu-acl-bundle": "2.0.*@dev"
    }
}

Now tell composer to download the bundle by running the command:

$ php composer.phar update xiidea/easy-menu-acl-bundle

Composer will install the bundle to your project's vendor/xiidea directory.

2. Enable the Bundle

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Xiidea\EasyMenuAclBundle\XiideaEasyMenuAclBundle(),
    );
}

3. Configure config.yml

# app/config/config.yml
xiidea_easy_menu_acl:
    # builders : [main, sidebar]

Cookbook

You can use this bundle 3(three) way.

1 Register menu with event listener.

First define builder configuration with as many menu as you need.

# app/config/config.yml
xiidea_easy_menu_acl:
    builders : [main, sidebar]

Then define event listener services to listen on xiidea.easy_menu_build_{THE_MENU_NAME}. For the example configuration there would be two events xiidea.easy_menu_build_main and xiidea.easy_menu_build_sidebar

# service.yml
    menu_build_listener:
        class: AppBundle\EventListener\MenuListener
        arguments: [@event_dispatcher]
        tags:
            - { name: kernel.event_listener, event: xiidea.easy_menu_build_main, method: buildMainMenu}
            - { name: kernel.event_listener, event: xiidea.easy_menu_build_sidebar, method: buildSideBarMenu}

Define the menuListener class

<?php
class MainMenuListener
{

    /**
     * @var TraceableEventDispatcher
     */
    private $dispatcher;

    public function __construct(TraceableEventDispatcher $dispatcher){

        $this->dispatcher = $dispatcher;
    }

    /**
     * @param EasyMenuEvent $event
     */
    public function buildMainMenu(EasyMenuEvent $event)
    {
        $menu = $event->getMenu();
        $factory = $event->getFactory();

        $menu->addChild('Home', array('uri' => '/'));
        $menu->addChild('Reports', array('route' => 'report_route'));

        //..

    }

    /**
     * @param EasyMenuEvent $event
     */
    public function buildSideBarMenu(EasyMenuEvent $event)
    {
        $menu = $event->getMenu();
        $factory = $event->getFactory();

        $menu->addChild('Home Page', array('uri' => '/'));
        $menu->addChild('Reports', array('route' => 'report_route'));

        //..

    }
}

2. Zero configuration dispatching event:

You can use the bundle without configuration. You then need to dispatch an event xiidea.easy_menu_acl_post_build after you build your menu. Like :

<?php
//Menu builder

use Xiidea\EasyMenuAclBundle\Event\EasyMenuEvent;

class MenuBuilder extends ContainerAware
{
    public function mainMenu(FactoryInterface $factory, array $options)
    {
        $menu = $factory->createItem('root');

        $menu->addChild('Home', array('uri' => '/'));

        $menu->addChild('Reports', array('route' => 'report_route'));

        //.....

        $this->container->get('event_dispatcher')->dispatch(
            "xiidea.easy_menu_acl_post_build",
            new EasyMenuEvent($factory, $menu)
        );

        return $menu;
    }

3. Zero configuration using access filter service:

You can use the xiidea.easy_menu_acl.access_filter and apply filter on menu object.

<?php
//Menu builder

class MenuBuilder extends ContainerAware
{
    public function mainMenu(FactoryInterface $factory, array $options)
    {
        $menu = $factory->createItem('root');

        $menu->addChild('Home', array('uri' => '/'));

        $menu->addChild('Reports', array('route' => 'report_route'));

        //.....

        $this->container->get('xiidea.easy_menu_acl.access_filter')->apply($menu);

        return $menu;
    }

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-03-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固