PHPackages                             rudak/menu-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. rudak/menu-bundle

ActiveSymfony-bundle[Framework](/categories/framework)

rudak/menu-bundle
=================

Symfony simple menu bundle

V1.1(10y ago)020GPL-3.0+PHPPHP &gt;=5.3.2

Since May 27Pushed 10y ago1 watchersCompare

[ Source](https://github.com/rudak/MenuBundle)[ Packagist](https://packagist.org/packages/rudak/menu-bundle)[ RSS](/packages/rudak-menu-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

MenuBundle
==========

[](#menubundle)

Simple Bundle de gestion des menus

Installation
------------

[](#installation)

**Composer.json** :`"rudak/menu-bundle": "dev-master"`
**Kernel** : `new Rudak\MenuBundle\RudakMenuBundle()`

Utilisation
-----------

[](#utilisation)

Il faut commencer par configurer les items du menu, dans config.yml de cette facon : rudak\_menu: items: - { index: Accueil, route: homepage, title: 'Accueil du site' } - { index: Administration, route: game\_main\_admin, title: 'Administration du site' } hierachy: blog: \['mon\_article','liste\_articles\_full'\] #optionnel configuration: current\_classname: yes #optionnel other\_classname: no #optionnel

Ensuite il faut placer l'appel du controller `{{ render(controller('RudakMenuBundle:Include:getHtmlMenu')) }}` dans votre vue sensée afficher le menu, chez moi c'est un menu *bootstrap classique* qui se trouve dans `'::main-menu.html.twig'`. Par contre le menu ne renvoie que les elements LI vu qu'il y a plein de classes dans mon UL, ca va plus vite. On peut forcer l'envoie d'un UL contenant l'ID `main_menu` enveloppant tout ca en ajoutant le parametre **wrapper = true** a l'appel du controller, dans le Twig. Par défaut, le wrapper est False.

Voila à quoi ce Twig ressemble :

```

                Toggle navigation

                MonSite.fr

                {{ render(controller('RudakMenuBundle:Include:getHtmlMenu',{'wrapper':false})) }}

```

Fonctionnement
--------------

[](#fonctionnement)

Voila, le menu sera appelé tout seul à chaque affichage de votre page, maintenant il faut signaler sur quelle page on se trouve pour que l'onglet correspondant prenne la classe 'active'. Et c'est désormais un listener qui s'occupe de ca tout seul à chaque requetes. Donc en gros, une fois la requete lancée, le listener chope le nom de la route et la place en session (avec la clé définie en constante dans MenuHandler). Ensuite il s'agit juste d'une simple comparaison de l'item de menu a afficher et de celui en session pour savoir si il faut attribuer la classe active ou pas. C'est un peu plus compliqué pour ce qui est de la hierarchie mais le code est commenté donc c'est pas sorcier. Bref, ca marche tout seul ^^

Hierarchie
----------

[](#hierarchie)

Sur un de mes sites, la partie blog et ses articles me posaient probleme. Je voulais que mes articles dépendent de l'onglet blog (onglet actif). Pour cette raison j'ai créé un systeme de hierarchie, configurable dans `config.yml` comme ceci :

```
rudak_menu:
    items:
        // ......
    hierachy:
        monBlog: ['mon_article','liste_articles_full']
        papa: ['fils','fille','chien','chat']

```

C'est assez simple à comprendre et ca correspond mieux à ce que je voulais. Comme ca, si on a un onglet actualités par exemple, il sera actif aussi bien pour la liste des actus que pour les actus elles memes. Ca peut etre arrangé encore...

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

4009d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0c53497f169359bdf8ab67f3690af61bd04257cdf7ad6302bd78534978115e7b?d=identicon)[rudak](/maintainers/rudak)

---

Top Contributors

[![rudak](https://avatars.githubusercontent.com/u/604478?v=4)](https://github.com/rudak "rudak (26 commits)")

---

Tags

userutilisateur

### Embed Badge

![Health badge](/badges/rudak-menu-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/rudak-menu-bundle/health.svg)](https://phpackages.com/packages/rudak-menu-bundle)
```

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[shopware/storefront

Storefront for Shopware

684.2M148](/packages/shopware-storefront)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
