luknei / navigator
此包最新版本(dev-master)没有可用的许可证信息。
dev-master
2014-06-14 08:31 UTC
Requires
- php: >=5.3.0
- illuminate/support: 4.1.*
This package is not auto-updated.
Last update: 2024-09-24 07:52:38 UTC
README
我厌倦了在一层又一层的foreach中编写foreach,所以为Laravel 4.*构建了一个简单的包,用于创建任意深度的菜单列表、面包屑等。
安装
在composer.json中添加此包,并运行composer update
"luknei/navigator": "dev-master"
更新composer后,将ServiceProvider添加到app/config/app.php中的providers数组中
'Luknei\Navigator\NavigatorServiceProvider',
在app.php中添加以下内容
'Nav' => 'Luknei\Navigator\NavigatorFacade',
使用
向navigator中添加项目
//First level/depth items:
//menu group - "menu", menu item - "auth", and variables of the template
Nav::group('menu')->add('auth',[
'title' => trans('auth::base.auth'),
'href' => '#',
'icon' => 'icon-key',
]);
//Second level/depth items:
//menu group - "menu", menu item - "auth.groups", and variables of the template
Nav::group('menu')->add('auth.groups', [
'title' => trans('auth::base.groups'),
'href' => URL::action('Auth\GroupsController@getAll'),
]);
设置模板
第一层/深度项目的模板 模板有几个元素
- @depth() ... @stop
- @foreach ... @endforeach
- @subgroup
- 当你向组中添加元素时传递的变量 $title, $icon 等
这些参数必须存在于每个模板中,即使你不需要 @subgroup,也应该使用它 @subgroup 应放置在嵌套 @foreach() ... @endforeach 的位置
@depth(1)
<ul class="nav nav-list">
@foreach
<li>
<a href="{{ $href }}" class="dropdown-toggle">
<i class="{{ $icon }}"></i>
<span class="menu-text"> {{ $title }} </span>
</a>
@subgroup
</li>
@endforeach
</ul>
@stop
你可以为任何层/深度项目设置默认模板
@depth(default)
<ul class="submenu" style="display: none;">
@foreach
<li>
<a href="{{ $href }}">
<i class="icon-double-angle-right"></i>
{{ $title }}
</a>
@subgroup
</li>
@endforeach
</ul>
@stop
还有偶数和奇数深度/层的选项 @depth(even) @depth(odd)
渲染菜单
要渲染导航菜单,只需设置组和使用render方法 render方法的第一个参数是你的模板,用法与View::make();相同
Nav::group('admin.menu')->render('partials.sidemenu');
如果你想为了更高的性能缓存渲染的菜单,传递第二个参数 - 保持缓存的分钟数。
Nav::group('admin.menu')->render('partials.sidemenu', 20); //cached for 20min