bhoeting/navigation-builder
此软件包最新版本(1.3.1)没有可用的许可证信息。
一个用于轻松创建导航HTML的Blade辅助工具。
1.3.1
2014-07-28 15:34 UTC
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
This package is not auto-updated.
Last update: 2024-09-28 16:41:26 UTC
README
本项目将不会更新以支持Laravel 5。
NavigationBuilder
为Laravel生成的导航HTML生成器。
安装
"require": { "bhoeting/navigation-builder": "*" }
运行 composer install
将服务提供者添加到app/config/app.php
文件中的providers
数组中
'bhoeting\NavigationBuilder\NavigationServiceProvider',
然后添加外观到aliases
数组
'Navigation' => 'bhoeting\NavigationBuilder\Navigation'
用法
基本
{{ Navigation::create(['home', 'about', 'contact'] }}
将生成
<ul class="nav navbar-nav"> <li class=""> <a href="https://:8000/home">Home</a> </li> <li class="active"> <a href="https://:8000/about">About</a> </li> <li class=""> <a href="https://:8000/contact">Contact</a> </li> </ul>
默认情况下,使用Bootstrap模板生成HTML。有关如何创建自己的模板,请参阅高级部分。请注意,about
项具有active
类。这是因为当前URL与about项的链接相同。当当前URL与项的链接模式匹配时,项也会处于活动状态。例如,https://:8000/about/who-we-are
也会使about
项处于活动状态。
每个项的显示文本和URL基于数组中提供的字符串。您可以指定自己的,如下所示
{{ Navigation::create(['home' => ['url' => '/'], 'about' => ['text' => 'about-us'], 'contact' => ['route' => 'contact.us']]) }}
输出
<ul class="nav navbar-nav"> <li class=""> <a href="https://:8000/">Home</a> </li> <li class="active"> <a href="https://:8000/about">About-us</a> </li> <li class=""> <a href="https://:8000/contact">Contact</a> </li> </ul>
您还可以将Font Awesome图标关联到要在项文本旁边显示。
{{ Navigation::create(['home' => ['url' => '/', 'icon' => 'user']]) }}
将输出
... <li class=""> <i class="fa fa-user"></i> Home </li>
高级
您可以通过扩展提供的AbstractNavigaiton
轻松重用和配置导航,并指定自己的模板、活动类和项。
// 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'; }
创建模板:app/views/navigation/item.blade.php
<li class="{{ $item->makeActive('aDifferentActiveClass') }}"> <a href="{{ $item->makeUrl() }}"> {{ $item->getText() }} </a> </li>
app/views/navigation/container.blade.php
<ul class="nav navbar-nav"> {{ $navigation->getItemHtml() }} </ul>
然后在您的视图中
{{ Navigation::create('Acme\Navigation\MasterNavigation') }}
您还可以将导航项存储在数据库中。首先,创建一个如下迁移
// 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'); } }
现在在您的AbstractNavigation
扩展中
<?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'; }