View Composer é uma solução elegante para um problema muito específico! Todo desenvolvedor provavelmente já se deparou com uma Exceção de variável indefinida ao chamar uma view. Isso é simples de resolver, foi você que esqueceu de buscar essa informação no seu controller para enviar.
Usando o View Composer, não há mais essa necessidade de ficar se preocupando com os dados do seu arquivo de visualização, pois esse recurso irá garantir que todas as informações estarão lá sempre que a sua view seja renderizada.
View Composer na Prática
Primeiro começo organizando o diretório de onde ficarão os arquivos que é em app/Http/View/Composers
é o que recomenda a documentação do Laravel mas você pode ficar a vontade para modificar.
Classe de View Composer
Dentro dessa classe você pode usar quaquer dependência que precise. Nesse exemplo estou dizendo para o framework que a variável users
irá receber o valor dessa consulta User::with('role')->withTrashed()->paginate(10)
. Todas as definições de variáveis ficarão nessa função compose
.
Criando um Service Provider
Para registrar os seus View Composers, iremos precisar criar um Service Providers
Esse é um exemplo do meu ViewServiceProvider
. Observe que no método register
eu especifico o diretório de onde os meus arquivos de visualização estão localizados. Não esqueça de registrar o seu Service Provider no array de 'providers'
em config/app.php
.
Veja que no registerComposers
é onde defino exatamente os arquivos que aquele View Composer que acabamos de criar irá aparecer.
View::composer([
'users.index',
'users.create',
'users.edit',
], UserViewComposer::class);
Nesse trecho estou informando que toda as variáveis definidas no UserViewComposer
irão aparecer sempre que forem renderizadas as views de index
,create
e edit
do usuário.
Vantagens
- O primeiro ponto que destaco é organização, pois todas as variáveis e dados serão tratados em um arquivo específico do seu projeto.
- Outro benefício é a "limpeza" que você irá causar nos seus controllers, pois não há necessidade de ficar passando dados por ele
- Gatantia que sempre uma view for renderizada, todos os dados que ela precisa estarão disponíveis
Conclusão
É isso galera, espero que tenham gostado desse recurso que ajuda muito a organizar o seu projeto e também melhorar a manutenção do código. Gostou? deixa um comentário ai 😃 .
Top comments (0)