Laravel: View Composer

O view composer é um recurso do Laravel que veio para simplificar a injeção de variáveis nas nossas views.

Imagine que você possui uma lista de categorias e deseja exibir essas categorias na lateral da sua página:

<div class='row'>
  <div class='col-sm-8'>
    ...
  </div>
  <div class='col-sm-8'>
     <ul>
     @foreach($categories as $category)
       <li><a>$category->name</a></li>
     @endforeach
     </ul>
  </div>
</div>

Agora imagine que essa mesma lista tem que ser exibida também na página de exibição do post, na página inicial do blog, na página de filtros e entre outras, você teria que fazer a mesma modificação nos seus respectivos controllers para fazer a busca das categorias e informar a variável com a lista de resultados.

Uma maneira mais simples de resolver isso é usando o view composer, informando que na renderização dessas páginas, uma variável com a lista de categorias é injetada.


class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // Injega a varaiável de $categories em todas as views
        // de categories.*
        view()->composer('categories.*', function ($view) {
            $view->with('categories', Category::all());
        });
    }
    

Segue uma sugestão de estudo sobre o assunto:
https://vegibit.com/what-is-a-view-composer-in-laravel/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *