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!