adiamond / illuminate-menu
A menu builder for Laravel using Bootstrap's markup.
Requires
- php: >=5.6.4
Requires (Dev)
- illuminate/http: 5.1.*|5.2.*|5.3.*
- illuminate/support: 5.1.*|5.2.*|5.3.*
- mockery/mockery: ~0.9
README
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.
Installation
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', ],
Documentation
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'); }, ] !!}
Item options
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.
Customization
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.