A plugin to make menus easier to write in symfony.
- Current menu item automatically given
activeclass - Menu items automatically given
firstandlastclasses - Show/hide menus based on authentication, credentials
- Hide portions of the tree, or render down to a certain depth
- Menu rendered with "pretty" spacing for easier debugging & styling
Inspired by sympal and the SemanticMenu from Ruby on Rails.
A small book has been written to support this plugin and ioDoctrineMenuItemPlugin: Menu Reference Manual.
Assume any of the routes have been defined in routing.yml:
$menu = new ioMenu(); $menu->addChild('overview', '@homepage'); $menu->addChild('comments', '@comments'); echo $menu->render(); Assuming you are on /comments, the output would be:
<ul class="menu"> <li class="first"> <a href="/">overview</a> </li> <li class="current last"> <a href="/comments">comments</a> </li> </ul> The ioMenu class optionally takes an array of attributes as its first argument. You can also nest menus as deeply as you want:
$menu = new ioMenu(array('class' => 'top_level_nav')); $menu->addChild('overview', '@homepage'); $menu->addChild('comments', '@comments', array('class' => 'button')); $menu['comments']->addChild('My Comments', '@my_comments'); $menu['comments']->addChild('Recent', '@recent_comments'); echo $menu->render(); Assuming you're in the /my-comments page, the output would be:
<ul class="top_level_nav"> <li class="first"> <a href="/">overview</a> </li> <li class="button current_ancestor last"> <a href="/comments">comments</a> <ul class="menu_level_1"> <li class="current first"> <a href="/my-comments">My Comments</a> </li> <li class="last"> <a href="/recent">Recent</a> </li> </ul> </li> </ul> git submodule add git://github.com/weaverryan/ioMenuPlugin.git plugins/ioMenuPlugin git submodule init git submodule update svn propedit svn:externals plugins In the editor that's displayed, add the following entry and then save
ioMenuPlugin https://svn.github.com/weaverryan/ioMenuPlugin.git Finally, update:
svn up In your config/ProjectConfiguration.class.php file, make sure you have the plugin enabled.
$this->enablePlugins('ioMenuPlugin'); An in-depth reference manual is available: Menu Reference Manual.
Please clone and improve this plugin! This plugin is by the community and for the community and I hope it can be final solution for handling menus.
If you have any ideas, notice any bugs, or have any ideas, you can reach me at ryan [at] thatsquality.com.
A bug tracker is available at http://redmine.sympalphp.org/projects/io-menu
This plugin was taken from sympal CMF and was developed by both Ryan Weaver and Jon Wage.