DEV Community

Cover image for O que é View Composer?
Jilcimar Fernandes
Jilcimar Fernandes

Posted on

O que é View Composer?

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.
image

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.
image

Classe de View Composer

image
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
image
Esse é um exemplo do meu ViewServiceProvider. Observe que no método registereu 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);
Enter fullscreen mode Exit fullscreen mode

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

  1. 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.
  2. Outro benefício é a "limpeza" que você irá causar nos seus controllers, pois não há necessidade de ficar passando dados por ele
  3. 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 😃 .

Discussion (0)