adel / laravel-menu
Laravel 的菜单组件
v0.2.1
2018-07-16 01:30 UTC
Requires
- php: >=7.0.0
- laravel/framework: >=5.1
Requires (Dev)
- phpunit/phpunit: ^6.4
This package is not auto-updated.
Last update: 2024-09-23 15:45:27 UTC
README
这是一个简单的Laravel菜单创建组件。它不使用控制器或创建庞大的blade模板,只需一个配置文件。
示例 (resources/menu/default.php)
<?php return [ //'template' => 'menu.menu', // custom blade template can be provided here 'items' => [ [ 'name' => 'Home', 'link' => route('dashboard'), 'active' => activeMenuController(\App\Http\Controllers\DashboardController::class), 'icon' => 'home', ], [ 'name' => 'Users', 'auth' => authMenuCan('manageUsers'), // Will be shown if user "can" 'manageUsers'. // Gate::check('manageUsers') will be checked 'link' => '/users', 'active' => activeMenuUrlPrefix('users'), // Will be active for all '/users*' URL's 'icon' => 'user', ], [ 'name' => trans('complex.auth'), 'auth' => function (){ return Gate::check('one') || Gate::check('two'); }, 'link' => '/complex-auth', 'active' => activeMenuUrlPrefix('complex-auth'), 'icon' => 'complex', ], [ 'name' => 'Group', 'icon' => 'group', 'items' => [ [ 'name' => 'Orders', 'link' => '/orders', // route('orders'), 'active' => activeMenuController(\App\Http\Controllers\OrdersController::class), 'icon' => 'orders', ], [ 'name' => 'Bar', 'link' => '/bar', // route('bar'), 'active' => activeMenuController(\App\Http\Controllers\BarController::class), 'icon' => 'bar', ], ], ], ], ];
单级菜单的blade模板可以非常简单
<!-- Example of menu template with Bootstrap and FontAwesome icons--> <nav class="navbar navbar-default"> <ul class="nav navbar-nav"> @foreach($items as $item) <li @if($item['active']) class="active" @endif> <a href="{{$item['link']}}" title="{{$item['name']}}"> <i class="fa fa-{{$item['icon']}}"></i> {{$item['name']}} </a> </li> @endforeach </ul> </nav>
对于双级菜单,会更加复杂。本包提供示例。
安装
首先,使用composer安装包
composer require adel/laravel-menu
对于Laravel < 5.5,请查看Laravel < 5.5 安装部分。
然后发布一些初始配置和blade模板
php artisan vendor:publish --provider="Adelf\LaravelMenu\LaravelMenuServiceProvider"
resources/menu/default.php 和 resources/views/menu/menu.blade.php 文件将出现。这只是示例。请提供您自己的配置和blade模板。
使用
这将渲染菜单的blade模板
<header> {!! LaravelMenu::render() !!} </header>
可以使用激活项目的标题作为标题
<title> {{array_get(LaravelMenu::getLastActiveItem(), 'name', 'Default title')}} </title>
多个菜单
另一个菜单可以通过在 resources/menu 目录下定义新文件来创建。例如,resources/menu/admin.php
<title> {!! array_get(LaravelMenu::getLastActiveItem('admin'), 'name', 'Default title') !!} </title> <header> {!! LaravelMenu::render('admin') !!} </header>
Laravel < 5.5 安装
服务提供者和外观应该注册在 config/app.php 中
'providers' => [ ... Adelf\LaravelMenu\LaravelMenuServiceProvider::class, ], 'aliases' => [ ..., 'LaravelMenu' => Adelf\LaravelMenu\Facade::class, ],