Skip to content

wiredupdev/WupMenuManagerBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Menu Manager Bundle

Menu manager bundle provides easy way to create and organize menus in your symfony applications.

Installation

 composer require wiredupdev/menu-manager-bundle

Config symfony

<?php
    // aplication-folder/config/bundles.php
    return [
        //...
        Wiredupdev\MenuManagerBundle\WudMenuManagerBundle::class => ['all' => true]  
    ];

Creating menu class

Class must implement __invoke method.

<?php
//...
use Wiredupdev\MenuManagerBundle\Menu\Item;
use Wiredupdev\MenuManagerBundle\Menu\Manager;

class Site
{
    //..
    public function __invoke(Manager $menuManager): void
    {
        $menuManager->add(
            Item::create('main_menu_site', 'main menu site')
            ->addChild(
                Item::create('main_menu_home', 'home', 'http://localhost/home')
                ->addAttribute('item_html_class', 'main-menu-home')
            )->addChild(
                Item::create('main_menu_about_about_us', 'about us', 'http://localhost/aboutus')
                ->addAttribute('item_html_class', 'main-menu-about-about-us')
            )
        );
    }

Config service

Menu class must register with tag wud_menu_manager.menus

services:
  App\Menu\Site:
    tags:
      - { name: wud_menu_manager.menus }

Menu item processor

Processor component run individual process when iterates through menu items. To register custom processes you need to add tag wud_menu_manager.processor to your service and implement Wiredupdev\MenuManagerBundle\Menu\Processor\ProcessInterface.

services:
  App\Menu\Processor\ExampleProcess:
    tags:
      - { name: wud_menu_manager.menus }
//..
use Wiredupdev\MenuManagerBundle\Menu\Item;

class ExampleProcess implements ProcessInterface
{
    //...

    public function process(Item $item): void
    {
         // change menu item data.
    }
}

Rendering menu

You can optionally set the template as second parameter.

    {{ menu('main_menu_site', 'some-template.html.twig') }}

About

Menu manager Bundle provides easy way to create and organize menus in your applications.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors