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 um comentário