1. Go to this page and download the library: Download appaydin/pd-menu library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// src/Menu/FirstMenu.php
namespace App\Menu;
use Pd\MenuBundle\Builder\ItemInterface;
use Pd\MenuBundle\Builder\Menu;
class FirstMenu extends Menu
{
/**
* Override
*/
public function createMenu(array $options = []): ItemInterface
{
// Create Root Item
$menu = $this
->createRoot('settings_menu', true) // Create event is "settings_menu.event"
->setChildAttr(['data-parent' => 'admin_account_list']); // Add Parent Menu to Html Tag
// Create Menu Items
$menu->addChild('nav_config_general', 1)
->setLabel('nav_config_general')
->setRoute('admin_settings_general')
->setLinkAttr(['class' => 'nav-item'])
->setRoles(['ADMIN_SETTINGS_GENERAL'])
// Contact
->addChildParent('nav_config_contact', 5)
->setLabel('nav_config_contact')
->setRoute('admin_settings_contact')
->setLinkAttr(['class' => 'nav-item'])
->setRoles(['ADMIN_SETTINGS_CONTACT'])
// Email
->addChildParent('nav_config_email', 10)
->setLabel('nav_config_email')
->setRoute('admin_settings_email')
->setLinkAttr(['class' => 'nav-item'])
->setRoles(['ADMIN_SETTINGS_EMAIL'])
// Template
->addChildParent('nav_config_template')
->setLabel('nav_config_template')
->setRoute('admin_settings_template')
->setLinkAttr(['class' => 'nav-item'])
->setRoles(['ADMIN_SETTINGS_TEMPLATE'])
// Account
->addChildParent('nav_config_user')
->setLabel('nav_config_user')
->setRoute('admin_settings_user')
->setLinkAttr(['class' => 'nav-item'])
->setRoles(['ADMIN_SETTINGS_USER']);
return $menu;
}
}
// src/Listener/MenuListener.php
namespace App\Listener;
use Pd\MenuBundle\Event\PdMenuEvent;
class MenuListener
{
public function onCreate(PdMenuEvent $event)
{
// Get Menu Items
$menu = $event->getMenu();
// Add New Item
$menu->addChild('demo_item', 5)
->setLabel('Home Page')
->setRoute('home_route');
}
}