Bifurcado (forked) de https://github.com/lordmacu/wmenu Configurado e Modificado para atender nossas necessidades, caso goste fique a vontade para usar
Execute o seguinte comando:
composer require i9w3b/laravel-menu-manager
Publicar configurações e ativos:
php artisan vendor:publish --provider="Harimayco\Menu\MenuServiceProvider"
Opcional:
- CUSTOM MIDDLEWARE: Adicionar middlewares
- TABLE PREFIX: Por padrão, o pacote criará 2 novas tabelas denominadas “menus” e “menu_items”
- TABLE NAMES Nome específico de tabela
- Custom routes Editar o caminho da rota, pode editar o campo
- Role Access Ativar funções (permissões) nos itens de menu
- Outras configurações...
Execute o comando:
php artisan migrate
Pronto
Publicar a rota para gerenciar os menus, para melhor gestão dos nossos projetos deixamos as rotas desabilitadas, para começar a usar tem que ativar as configurações routes_view e routes_post
alterando os valores para true
:
// arquivo config/menu.php
/*
|--------------------------------------------------------------------------
| Publicar rota para gerenciar (get e post) menus | true ou false
|--------------------------------------------------------------------------
*/
'routes_view' => false,
'routes_post' => false,
No arquivo blade
@extends('app')
@section('contents')
{!! Menu::render() !!}
@endsection
@push('scripts')
{!! Menu::scripts() !!}
@endpush
Usando as classes
use Harimayco\Menu\Models\Menus;
use Harimayco\Menu\Models\MenuItems;
Um menu básico de dois níveis pode ser exibido no seu modelo blade
// Obter o menu por ID
$menu = Menus::find(1);
// Ou por nome
$menu = Menus::where('name','Test Menu')->first();
// Ou obtenha o menu pelo nome e os itens (RECOMENDADO para melhor desempenho e menos chamadas de consulta)
$menu = Menus::where('name','Test Menu')->with('items')->first();
// Ou acesse
$menu = Menus::where('id', 1)->with('items')->first();
// Acessar o resultado
$public_menu = $menu->items;
// Ou converta em array
$public_menu = $menu->items->toArray();
Agora, dentro do seu arquivo de modelo blade, coloque o menu usando este exemplo
<div class="nav-wrap">
<div class="btn-menu">
<span></span>
</div>
<nav id="mainnav" class="mainnav">
@if($public_menu)
<ul class="menu">
@foreach($public_menu as $menu)
<li class="">
<a href="{{ $menu['link'] }}" title="">{{ $menu['label'] }}</a>
@if( $menu['child'] )
<ul class="sub-menu">
@foreach( $menu['child'] as $child )
<li class=""><a href="{{ $child['link'] }}" title="">{{ $child['label'] }}</a></li>
@endforeach
</ul>
@endif
</li>
@endforeach
@endif
</ul>
</nav>
</div>
Obter itens de menu por ID
use Harimayco\Menu\Facades\Menu;
$menuList = Menu::get(1);
Obter itens de menu por nome Neste exemplo, você deve ter um menu chamado Admin
use Harimayco\Menu\Facades\Menu;
$menuList = Menu::getByName('Admin');
Você pode editar a interface do menu em resources/views/vendor/wmenu/menu-html.blade.php
Para a customização acima use:
php artisan vendor:publish --provider="Harimayco\Menu\MenuServiceProvider"
Caso descubra algum problema relacionado à segurança, envie um e-mail para marcelosenaonline@gmail.com
em vez de usar o rastreador de problemas.
MIT © i9W3b | Consulte LICENSE.md para obter mais informações.