1. Go to this page and download the library: Download tobento/service-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/ */
tobento / service-menu example snippets
use Tobento\Service\Menu\Menu;
use Tobento\Service\Menu\Item;
use Tobento\Service\Menu\Link;
$menu = (new Menu('footer'))
->add(new Item('about us'))
->add(new Link('/contact', 'contact'))
->add(new Item('team', null, 'about us'));
$menu = new Menu('footer');
$menu->item('about us');
$menu->link('/contact', 'contact');
$menu->item('team')->parent('about us');
<?= $menu->render()
use Tobento\Service\Menu\Menu;
use Tobento\Service\Menu\Item;
use Tobento\Service\Menu\Link;
use Tobento\Service\Menu\Html;
$menu = (new Menu('footer'))
->add(new Item('about us'))
->add(new Link('/contact', 'contact'))
->add(new Html('html')); // must be escaped!
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$item = $menu->item('about us');
$linkItem = $menu->link('/contact', 'contact');
$htmlItem = $menu->html('html'); // must be escaped!
use Tobento\Service\Menu\Menu;
use Tobento\Service\Menu\Item;
use Tobento\Service\Menu\Link;
$menu = (new Menu('footer'))
->add(new Item('about us'))
->add(new Item('team', parent: 'about us'));
$menu = new Menu('footer');
$menu->item('about us');
$menu->item('team')->parent('about us');
// or by defining an id
$menu = (new Menu('footer'))
->add(new Item('about us', id: 'about'))
->add(new Item('team', parent: 'about'));
$menu = new Menu('footer');
$menu->item('about us')->id('about');
$menu->item('team')->parent('about');
use Tobento\Service\Menu\LinkToFirstChild;
use Tobento\Service\Menu\Menu;
$menu = new Menu('main');
$menu->add((new LinkToFirstChild($menu, 'Settings'))->id('settings'));
$menu->link('/locales', 'locales')->parent('settings');
use Tobento\Service\Menu\Menu;
$menu = new Menu('header');
$menu->link('/login', 'Login')->icon(name: 'login');
// you may define a position for all icons:
$menu->iconPosition('left');
use Tobento\Service\Menu\MenuIconsFactory;
use Tobento\Service\Icon\IconsInterface;
$menuFactory = new MenuIconsFactory(
icons: $icons, // IconsInterface
);
$menu = $menuFactory->createMenu(name: 'header');
$menu->onlyIcons();
use Tobento\Service\Menu\Menu;
$menu = new Menu('header');
$menu->link('/invoices', 'Invoices')->badge(text: '10', attributes: ['title' => '10 new invoices']);
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team');
$menu->item('about');
$menu->on('team', function($item, $menu) {
$item->itemTag()->class('foo');
$item->parentTag()->class('bar');
return $item;
});
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team')->parent('about');
$menu->item('about');
$menu->item('contact');
$menu->onParents('team', function($item, $menu) {
$item->itemTag()->class('foo');
return $item;
});
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team')->parent('about');
$menu->item('about');
$menu->item('contact');
$menu->item('form')->parent('contact');
// set the form item and all its parent items active.
$menu->active('form');
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team')->parent('about');
$menu->item('about');
$menu->item('contact');
$menu->item('form')->parent('contact');
// set the form item active.
$menu->active('form');
// do not render any inactive tree items.
$menu->subitems(false);
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team')->parent('about');
$menu->item('about');
$menu->item('contact')->active();
$menu->item('form')->parent('contact')->active();
// do no render any inactive tree items.
$menu->subitems(false);
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team');
$menu->get('team')->itemTag()->class('active');
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team');
$items = $menu->all();
use Tobento\Service\Menu\Menu;
use Tobento\Service\Menu\Tag;
use Tobento\Service\Menu\NullTag;
$menu = new Menu('footer');
// add class foo to every ul tag.
$menu->tag('ul')->class('foo');
// add class foo only to every ul tag with depth level 1.
$menu->tag('ul')->level(1)->class('foo');
// add class foo to every li tag.
$menu->tag('li')->class('foo');
// add class foo and bar only to every li tag with depth level 2.
$menu->tag('li')->level(2)->class('foo')->class('bar');
// add any attribute with the attr() method.
$menu->tag('li')->attr('data-foo', '1');
// change every ul tag to ol tag.
$menu->tag('ul')->handle(fn() => new Tag('ol'));
// assign current level so that other
// level tag attributes get assigned.
$menu->tag('ul')->handle(fn(Tag $t) => (new Tag('ol'))->level($t->getLevel()));
// change every ul tag to div tag.
$menu->tag('ul')->handle(fn() => new Tag('div'));
// change every li tag to a null tag and prepend and append a character.
$menu->tag('li')->handle(fn() => (new NullTag())->prepend('[')->append(']'));
// get tag attributes.
$attributes = $menu->tag('li')->attributes();
// check if there are any attributes.
$empty = $attributes->empty();
// check if there is a specific attribute.
$hasClassAttr = $attributes->has('class');
// get any attribute.
$classAttr = $attributes->get('class');
// get any attribute.
$classAttr = $attributes->get('class');
// get all attributes.
$allAttributes = $attributes->all();
// set an attribute.
$attributes->set('data-foo', '1');
// add an attribute (merges).
$attributes->add('data-foo', '1');
// merge an attribute.
$attributes->merge('data-foo', '1');
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$item = $menu->link('/contact', 'contact');
// The item tag.
$item->itemTag()->class('bar');
// The tag: link items have for instance its own tag. The a tag.
$item->tag()->class('foo');
// The parent tag is not yet available.
var_dump($item->parentTag()); // NULL
// Use each(), on(), onParents() methods if you need to manage the parent tag.
use Tobento\Service\Menu\Tag;
$tag = new Tag('a', htmlspecialchars('html', ENT_QUOTES, 'UTF-8'));
$tag->content(htmlspecialchars('html', ENT_QUOTES, 'UTF-8'));
$tag->append(htmlspecialchars('html', ENT_QUOTES, 'UTF-8'));
$tag->prepend(htmlspecialchars('html', ENT_QUOTES, 'UTF-8'));
use Tobento\Service\Menu\Menus;
use Tobento\Service\Menu\Menu;
// Create menus.
$menus = new Menus();
// Create menus with a custom menu factory.
$menus = new Menus(new CustomMenuFactory());
// Add a menu.
$menus->add(new Menu('main'));
// Get the main menu. If it does not exist, it returns null.
$menus->get('main');
// Get the main menu. If it does not exist, it creates a new one.
$menus->menu('main')
->item('about')
->order(1000);
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team')->parent('about');
$menu->item('about');
$menu->item('contact');
$menu->item('form')->parent('contact');
$menu->on('form', function($item, $menu) {
$item->itemTag()->class('active');
$item->parentTag()->class('active');
return $item;
});
use Tobento\Service\Menu\Menu;
$menu = new Menu('footer');
$menu->item('team')->parent('about');
$menu->item('about');
$menu->item('contact');
$menu->item('form')->parent('contact');
$menu->onParents('form', function($item, $menu) {
$item->itemTag()->class('active');
if ($item->getTreeLevel() > 0) {
$item->parentTag()->class('active');
}
$item->tag()->class('active');
return $item;
});
// do only render active tree.
$menu->active('form')
->subitems(false);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.