Recommend this page to a friend! |
![]() ![]() |
Info | ![]() |
![]() |
![]() ![]() |
Reputation | Support forum | Blog (1) | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2021-07-29 (1 month ago) ![]() | Not yet rated by the users | Total: 103 This week: 7 | All time: 9,472 This week: 31![]() |
Version | License | PHP version | Categories | |||
easymenuaclbundle 1.0.0 | The PHP License | 5 | HTML, PHP 5, User Management, Security |
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
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.
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Xiidea\EasyMenuAclBundle\XiideaEasyMenuAclBundle(),
);
}
# app/config/config.yml
xiidea_easy_menu_acl:
# builders : [main, sidebar]
You can use this bundle 3(three) way.
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'));
//..
}
}
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;
}
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;
}
![]() |
File | Role | Description | ||
---|---|---|---|---|
![]() |
||||
![]() |
||||
![]() |
||||
![]() |
||||
![]() |
||||
![]() |
||||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Lic. | License text | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Doc. | Read me | ||
![]() |
Class | Class source |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.