lazychaser / illuminate-menu by lazychaser

A menu builder for Laravel using Bootstrap's markup.
11,487
24
7
Package Data
Maintainer Username: lazychaser
Maintainer Contact: lazychaser@gmail.com (Alexander Kalnoy)
Package Create Date: 2015-01-15
Package Last Update: 2019-10-18
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-04-23 03:10:40
Package Statistics
Total Downloads: 11,487
Monthly Downloads: 262
Daily Downloads: 9
Total Stars: 24
Total Watchers: 7
Total Forks: 3
Total Open Issues: 0

Laravel Menu Builder

A menu builder for Laravel 4-5 using Bootstrap's markup.

Build Status Latest Stable Version Total Downloads

Документация на Русском

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 id
  • url is the url which can be a full URI or local path
  • route to specify a route, possibly with parameters
  • secure; specify true to make url be secure (doesn't affect route option)
  • items is an array of items for drop down menu
  • linkOptions 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 visible
  • active is a boolean value or closure to specify whether to add active class to item; if not specified, determined automatically based on current url
  • disabled 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.