2017-25 © Pedro Peláez
 

symfony2-bundle easy-menu-acl-bundle

Role Based Access filter for Symfony2 KnpMenuBundle

image

xiidea/easy-menu-acl-bundle

Role Based Access filter for Symfony2 KnpMenuBundle

  • Wednesday, August 31, 2016
  • by xiidea
  • Repository
  • 1 Watchers
  • 2 Stars
  • 86 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 2 % Grown

The README.md

Easy Menu Acl Bundle

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., (*1)

Note: If you are using Symfony version older then 2.6 you need to use EasyMenuAclBundle 1.x, (*2)

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:, (*3)

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

Now tell composer to download the bundle by running the command:, (*4)

``` bash $ php composer.phar update xiidea/easy-menu-acl-bundle, (*5)


Composer will install the bundle to your project's `vendor/xiidea` directory. ### 2. Enable the Bundle ``` php <?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Xiidea\EasyMenuAclBundle\XiideaEasyMenuAclBundle(), ); }

3. Configure config.yml

``` yaml, (*6)

app/config/config.yml

xiidea_easy_menu_acl: # builders : [main, sidebar], (*7)


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. ``` yaml # 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, (*8)

``` yaml, (*9)

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 <?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 :, (*10)

<?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., (*11)

<?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;
    }

The Versions

31/08 2016

1.0.x-dev

1.0.9999999.9999999-dev

Role Based Access filter for Symfony2 KnpMenuBundle

  Sources   Download

MIT

The Requires

 

The Development Requires

acl symfony2 menu knpmenubundle

31/08 2016

dev-master

9999999-dev

Role Based Access filter for Symfony2 KnpMenuBundle

  Sources   Download

MIT

The Requires

 

The Development Requires

acl symfony2 menu knpmenubundle

05/03 2015

1.0.0

1.0.0.0

Role Based Access filter for Symfony2 KnpMenuBundle

  Sources   Download

MIT

The Requires

 

The Development Requires

acl symfony2 menu knpmenubundle