luknei/navigator

此包最新版本(dev-master)没有可用的许可证信息。

dev-master 2014-06-14 08:31 UTC

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