Skip to content

Latest commit

 

History

History
65 lines (46 loc) · 2.14 KB

menu-dinamico.md

File metadata and controls

65 lines (46 loc) · 2.14 KB

Tema do Laravel para projetos USPdev

Início > Menu dinâmico

É possível adicionar e remover itens do menu dinamicamente. Para isso é necessário criar um item do menu com o nome key que será substituído pelo menu dinâmico:

[
    'key' => 'meu menu dinamico',
]

A substituição pode ser feita de três formas diferentes: no controller, no view composer ou por evento.

Controller

O menu dinâmico adicionado no controller é aplicado somente na rota correspondente.

\UspTheme::addMenu('meu menu dinamico', [
    'text' => 'Menu dinâmico',
    'url' => 'caminho_do_menu',
]);

A sintaxe é igual ao utilizado no menu estático e pode conter inclusive submenus.

View composer

Para aplicar um menu dinâmico em todas as rotas a melhor forma é utilizar View Composers. Nesse método, o menu é criado antes da renderização da view.

Passo a passo:

  • em app/Providers crie o arquivo ViewServiceProvider.php com o conteúdo indicado na documentação;
  • coloque as chamadas ao menu dinâmico no método boot() da mesma forma que é feito no controller;
  • em config/app.php->providers registre o novo arquivo;

Eventos

Outra forma de adicionar menu dinâmico é por meio de eventos. É apropriado para ser escutado por outras bibliotecas.

A biblioteca emite um evento ao montar o menu dinâmico. O evento é similar ao \UspTheme::addMenu() no sentido de substituir as entradas com key. Para isso, no EventServiceProvider coloque:

use Illuminate\Support\Facades\Event;
use Uspdev\UspTheme\Events\UspThemeParseKey;
...

public function boot()
{
    ...

    Event::listen(function (UspThemeParseKey $event) {
        if (isset($event->item['key']) && $event->item['key'] == 'chave-definida-no-config') {
            $event->item = [
                'text' => 'descreva o ítem aqui',
                'url' => '',
            ];
        }
        return $event->item;
    });
}

Ele deve retornar $event->item sem alterações ou substituir o conteúdo pelo menu desejado.