Front End

27 jul, 2018

Criando menus em PHP com o Spatie/Menu

Publicidade

Fala, pessoal! Tudo bom?

Estou aqui para mostrar pra vocês mais uma vez uma biblioteca para facilitar o seu trabalho com PHP. Hoje, vamos falar sobre como criar menus com objetos PHP para o seu projeto Web com o Spatie/Menu.

Mais uma vez, é uma biblioteca que a Spatie desenvolveu para que seja mais fácil implementar algo utilizando PHP. No início dos tempos de PHP, a gente usava bastante a linguagem para gerar as tags HTML. Depois, isso passou a ser uma má prática, mas parece que está voltando novamente a ser boa, já que muitos frameworks JavaScript retornam variáveis que na verdade são tags HTML junto com conteúdo – uma coisa meio doida, mas parece que funciona.

A ideia do artigo é mostrar que é muito fácil gerar um menu com base em orientação a objetos. Vamos ao código!

Vamos criar uma pasta “menu” e instalar a biblioteca em nosso projeto.

composer require spatie/menu

Agora criamos o arquivo menu.php para entender como funciona a biblioteca.

Basicamente, o desenvolvimento do menu é baseado em adicionar links e elementos a classe Menu.

<?php

require_once 'vendor/autoload.php'; //autoload das bibliotecas

use Spatie\Menu\Menu; //usando a classe Menu de Spatie/Menu
use Spatie\Menu\Link; //usando a classe Link de Spatie/Menu

$menu = Menu::new()  //criando um novo menu
    ->add(Link::to('/', 'Home')) //definindo um link para a página inicial
    ->add(Link::to('/about', 'Sobre')) //definindo um link para a página Sobre
    ->add(Link::to('/contact', 'Contato')) //definindo um link para a página Contato
    ->add(Link::to('http://bit.ly/thevelopers-fernandabernardo','Fernanda Bernardo')) //definindo um link para o The Velopers com a Fernanda Bernardo
    ->add(Link::to('http://bit.ly/thevelopers-bob','Bob')) //definindo um link para o The Velopers com o Bob
    ->render(); //renderizando o menu

print($menu); //exibindo o menu

Podemos simplesmente dar um php menu.php para verificar a saída:

Ou dar um php -S localhost:80 para abrir o servidor interno PHP e usar o browser para verificar.

Mas além de apenas criar os elementos <ul> e <li>, podemos implementar menus com classes ou outros elementos.

Vamos entender um pouco mais no menu2.php

<?php

require_once 'vendor/autoload.php'; //autoload das bibliotecas

use Spatie\Menu\Menu; //usando a classe Menu de Spatie/Menu
use Spatie\Menu\Link; //usando a classe Link de Spatie/Menu
use Spatie\Menu\Html; //usando a classe Html de Spatie/Menu

$menu = Menu::new()  //criando um novo menu
    ->addClass('menu') //adicionando um atributo class ao menu
    ->add(Html::raw('<span>Menu do Sucesso!</span>')) //adicionando um elemento <span> dentro do menu
    ->add(Link::to('/', 'Home')) //definindo um link para a página inicial
    ->add(Link::to('/about', 'Sobre')) //definindo um link para a página Sobre
    ->add(Link::to('/contact', 'Contato')) //definindo um link para a página Contato
    ->submenu('The Velopers', Menu::new() //adicionando um submenu The Velopers
        ->addClass('submenu') //adicionando um atributo class ao submenu
        ->add(Link::to('http://bit.ly/thevelopers-fernandabernardo','Fernanda Bernardo')) //definindo um link para o The Velopers com a Fernanda Bernardo
        ->add(Link::to('http://bit.ly/thevelopers-bob','Bob'))//definindo um link para o The Velopers com o Bob
    )
    ->render(); //renderizando o menu

print($menu); //exibindo o menu

Você pode customizar bastante o menu, adicionando algumas outras coisas. A documentação da biblioteca é bem completa.

Espero que ajude você, que queria montar menus em PHP. Até a próxima!