2017 © Pedro Peláez
 

library navigation-builder

A Blade helper to easily create Navigation HTML.

image

bhoeting/navigation-builder

A Blade helper to easily create Navigation HTML.

  • Monday, June 8, 2015
  • by bhoeting
  • Repository
  • 1 Watchers
  • 3 Stars
  • 37 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

This project will not be updated for Laravel 5.

NavigationBuilder

A navigation HTML generator for Laravel., (*1)

Installation

"require": {
    "bhoeting/navigation-builder": "*"
}

Run composer install, (*2)

Add the service provider to the providers array in app/config/app.php, (*3)

'bhoeting\NavigationBuilder\NavigationServiceProvider',

Then add the facade to the aliases array, (*4)

'Navigation' => 'bhoeting\NavigationBuilder\Navigation'

Usage

Basic

{{ Navigation::create(['home', 'about', 'contact'] }}

Will generate:, (*5)

<ul class="nav navbar-nav">
    <li class="">
        <a href="http://localhost:8000/home">Home</a>
    </li>
    <li class="active">
        <a href="http://localhost:8000/about">About</a>
    </li>
    <li class="">
        <a href="http://localhost:8000/contact">Contact</a>
    </li>
</ul>

By default, a Bootstrap template is used to generate the HTML. See Advanced on how you can create your own templates. Also note that the about item has an a class of active. This is because the current URL is the same as the about item's link. Items are also active when the current URL matches a pattern of the item's link. For instance, http://localhost:8000/about/who-we-are will also make the about item active., (*6)

The display text and URL for each item are based on the strings provided in the array. You can specify your own like so:, (*7)

{{ Navigation::create(['home' => ['url' => '/'], 'about' => ['text' => 'about-us'], 'contact' => ['route' => 'contact.us']]) }}

Output:, (*8)

<ul class="nav navbar-nav">
    <li class="">
        <a href="http://localhost:8000/">Home</a>
    </li>
    <li class="active">
        <a href="http://localhost:8000/about">About-us</a>
    </li>
    <li class="">
        <a href="http://localhost:8000/contact">Contact</a>
    </li>
</ul>

You can also associate a Font Awesome Icon to be displayed next to the Item's text., (*9)

{{ Navigation::create(['home' => ['url' => '/', 'icon' => 'user']]) }}

Will output:, (*10)

...
<li class="">
    <i class="fa fa-user"></i> Home
</li>

Advanced

You can easily re-use and configure Navigations by extending the provided AbstractNavigaiton and specify your own templates, active class, and Items., (*11)

// app/Acme/Navigation/MasterNavigation.php

<?php namespace Acme\Navigation;

use bhoeting\NavigationBuilder\AbstractNavigation;

class MasterNavigation extends AbstractNavigation {

    protected $items = [
        'home'    => ['url' => '/'],
        'about'   => ['text' => 'About us'],
        'contact' => ['route' => 'contact.page']
    ];


    protected $itemTemplate = 'navigation.item';

    protected $containerTemplate = 'navigation.container';

}

Create the templates: app/views/navigation/item.blade.php, (*12)

<li class="{{ $item->makeActive('aDifferentActiveClass') }}">
    <a href="{{ $item->makeUrl() }}">
        {{ $item->getText() }}
    </a>
</li>

app/views/navigation/container.blade.php, (*13)



Then in your view:, (*14)

{{ Navigation::create('Acme\Navigation\MasterNavigation') }}

You can also store Navigation items in the database. First, create a migration like the one below:, (*15)

// app/database/migrations/CreateMasterNavItemsTable.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateNavigationTable extends Migration {

    public function up()
    {
        Schema::create('master_nav_items', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('name');
            $table->string('url')->nullable();
            $table->string('route')->nullable();
            $table->string('text')->nullable();
        });
    }

    public function down()
    {
        Schema::drop('master_nav_items');
    }

}

Now in your extension of AbstractNavigation, (*16)

<?php namespace Acme\Navigation;

use bhoeting\NavigationBuilder\AbstractNavigation;

class MasterNavigation extends AbstractNavigation {

    protected $table = 'master_nav_items';

    protected $itemTemplate = 'navigation.item';

    protected $containerTemplate = 'navigation.container';

}

The Versions

08/06 2015

dev-master

9999999-dev

A Blade helper to easily create Navigation HTML.

  Sources   Download

The Requires

 

by Brennan Hoeting

28/07 2014

1.3.1

1.3.1.0

A Blade helper to easily create Navigation HTML.

  Sources   Download

The Requires

 

by Brennan Hoeting

25/07 2014

1.3

1.3.0.0

A Blade helper to easily create Navigation HTML.

  Sources   Download

The Requires

 

by Brennan Hoeting

24/07 2014

1.2

1.2.0.0

A Blade helper to easily create Navigation HTML.

  Sources   Download

The Requires

 

by Brennan Hoeting

23/07 2014

1.1

1.1.0.0

A Blade helper to easily create Navigation HTML.

  Sources   Download

The Requires

 

by Brennan Hoeting

17/07 2014

1.0

1.0.0.0

A Blade helper to easily create Navigation HTML.

  Sources   Download

The Requires

 

by Brennan Hoeting