bhoeting/navigation-builder

此软件包最新版本(1.3.1)没有可用的许可证信息。

一个用于轻松创建导航HTML的Blade辅助工具。

1.3.1 2014-07-28 15:34 UTC

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';

}