A menu builder for Laravel 4-5 using Bootstrap's markup.
Note that this package is shipped with no styles nor scripts, you have to download them manually from Twitter Bootstrap's site.
Install using Composer:
composer require kalnoy/illuminate-menu:~1.0
Add a service provider:
'providers' => [
'Illuminate\Html\MenuServiceProvider',
],
And a facade:
'aliases' => [
'Menu' => 'Illuminate\Support\Facades\Menu',
],
Rendering a menu:
{!! Menu::render($items, $attributes) !!}
Where $attributes
is optional array of html attributes for ul
element.
Rendering a list of menu items:
<ul>{!! Menu::items($items) !!}</ul>
Rendering a single menu item:
{!! Menu::item($label, $url) !!}
{!! Menu::item($label, $options) !!}
{!! Menu::item($options) !!}
See a list of available options below.
Basic example:
Menu::render([
'Link to url' => 'bar',
'Link to external url' => 'http://bar',
[ 'label' => 'Link to url', 'url' => 'bar' ],
'Link to route' => [ 'route' => [ 'route.name', 'foo' => 'bar' ] ],
]);
Rendering an item with a drop down menu:
{!! Menu::item([
'label' => 'Settings',
'icon' => 'wrench',
'items' => [
'Foo' => 'bar',
'-', // divider
'Logout' => [ 'route' => 'logout_path' ],
],
]) !!}
Controlling whether the item is visible:
{!! Menu::item([
'label' => 'Foo',
'url' => 'bar',
'visible' => function () { return Config::get('app.debug'); },
] !!}
You can specify an array of following options:
label
is a label of the item, automatically translated, so you can specify lang string idurl
is the url which can be a full URI or local pathroute
to specify a route, possibly with parameterssecure
; specifytrue
to makeurl
be secure (doesn't affectroute
option)items
is an array of items for drop down menulinkOptions
is an array of additional link attributes
Changing the state of the item:
visible
is a boolean value or closure to specify whether the item is visibleactive
is a boolean value or closure to specify whether to addactive
class to item; if not specified, determined automatically based on current urldisabled
is a boolean value or closure to specify whether the menu item is disabled
Presentation options:
icon
is a glyphicon id, i.e.pencil
badge
is a value for badge (scalar or closure)- and any other parameter that will be rendered as an attribute for
<li>
element.
Though this menu builder intended to be used together with bootstrap markup, you can customize it however you like by
extending Illuminate\Html\MenuBuilder
class and overriding base methods.