knplabs / knp-menu
An object oriented menu library
Installs: 46 420 414
Dependents: 151
Suggesters: 6
Security: 0
Stars: 1 389
Watchers: 63
Forks: 193
Open Issues: 24
Requires
- php: ^8.1
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.6
- psr/container: ^1.0 || ^2.0
- symfony/http-foundation: ^5.4 || ^6.0 || ^7.0
- symfony/phpunit-bridge: ^7.0
- symfony/routing: ^5.4 || ^6.0 || ^7.0
- twig/twig: ^2.16 || ^3.0
Suggests
- twig/twig: for the TwigRenderer and the integration with your templates
Conflicts
- twig/twig: <1.42.3 || >=2,<2.9
This package is auto-updated.
Last update: 2024-12-20 17:34:23 UTC
README
The KnpMenu library provides object oriented menus for PHP. It is used by the KnpMenuBundle for Symfony but can now be used stand-alone.
Installation
KnpMenu uses Composer, please checkout the composer website for more information.
The simple following command will install knp-menu
into your project. It also add a new
entry in your composer.json
and update the composer.lock
as well.
composer require knplabs/knp-menu
KnpMenu follows the PSR-4 convention names for its classes, which means you can easily integrate
knp-menu
classes loading in your own autoloader.
Getting Started
<?php // Include dependencies installed with composer require 'vendor/autoload.php'; use Knp\Menu\MenuFactory; use Knp\Menu\Renderer\ListRenderer; $factory = new MenuFactory(); $menu = $factory->createItem('My menu'); $menu->addChild('Home', ['uri' => '/']); $menu->addChild('Comments', ['uri' => '#comments']); $menu->addChild('Symfony', ['uri' => 'http://symfony.com/']); $menu->addChild('Happy Awesome Developers'); $renderer = new ListRenderer(new \Knp\Menu\Matcher\Matcher()); echo $renderer->render($menu);
The above menu would render the following HTML:
<ul> <li class="first"> <a href="/">Home</a> </li> <li class="current"> <a href="#comments">Comments</a> </li> <li> <a href="http://symfony.com/">Symfony</a> </li> <li class="last"> <span>Happy Awesome Developers</span> </li> </ul>
This way you can finally avoid writing an ugly template to show the selected item, the first and last items, submenus, ...
The bulk of the documentation can be found in the
doc
directory.
What now?
Follow the tutorial in doc/01-Basic-Menus.md
and doc/02-Twig-Integration.md
to discover how KnpMenu will rock your world!
Find all available documentation at doc/
.
Maintainers
This library is maintained by the following people (alphabetically sorted) :
Credits
This bundle was originally ported from ioMenuPlugin, a menu plugin for symfony1. It has since been developed by KnpLabs and the Symfony community.