Compartilhar variáveis com VIEW COMPOSER

O que é o View Composer?

O View Composer é uma ferramenta poderosa do Laravel que permite compartilhar variáveis com uma ou mais views. Em situações em que há a necessidade de preencher selects com dados recorrentes, como uma lista de estados, o View Composer oferece uma forma eficiente de evitar repetição de código e melhorar a usabilidade.

Exemplos Práticos de Uso do View Composer

Imagine que você está desenvolvendo um sistema para cadastro de clientes e fornecedores. Em ambos os casos, o usuário precisa escolher um estado a partir de uma lista. Uma solução comum seria criar uma array com os estados e usar um foreach para preencher o select, mas à medida que o sistema cresce, essa abordagem se torna ineficiente.

Aqui é onde o View Composer entra em ação.

O View Composer é um recurso no Laravel que te permite compartilhar uma variável com uma ou mais Views. Logo você poderá imaginar muitos usos para este recurso.

Existem formas diferentes de se contruir e a melhor delas dependerá de sua necessidade. Neste breve artigo, mostrarei a maneira mais simples.

Implementando o View Composer no Laravel

Para implementar o View Composer, você deve adicionar o código no método boot() de um service provider. No exemplo abaixo, utilizaremos o AppServiceProvider para demonstrar como compartilhar variáveis com views específicas:

public function boot()
{
    view()->composer('form.*', function ($view) {
        $estados = [
            'SP' => 'São Paulo',
            'PN' => 'Paraná',
            'AM' => 'Amazonas',
            'GO' => 'Goiás',
            'CE' => 'Ceará'
        ];

        $view->with('estados', $estados);
    });
}

Entendendo o Código

O método composer() recebe dois parâmetros:

  1. O primeiro parâmetro define as views que receberão a variável. Você pode usar 'form.*' para indicar todas as views no diretório form, ou especificar views individuais.
  2. O segundo parâmetro é uma closure onde você define a lógica e passa a variável para a view através do método with().

Aplicando em um Formulário Blade

Com a variável de estados agora disponível em suas views, você pode utilizá-la facilmente para preencher selects, como mostrado no exemplo abaixo:

<select name="estado">
    @foreach($estados as $sigla => $estado)
        <option value="{{ $sigla }}">{{ $estado }}</option>
    @endforeach
</select>

Da mesma forma, você pode aplicar o View Composer para preencher outras informações dinâmicas, como cidades:

public function boot()
{
    view()->composer('clientes.*', function($view) {
        $cidades = DB::table('cidades')->where('estado', 'sp')->pluck('nome', 'sigla');
        $view->with('cidades', $cidades);
    });
}

Alternativa: Usando View Share

Outro método mais simples de compartilhar variáveis é através do view share, que compartilha variáveis de forma global em todas as views. No entanto, não é recomendado para situações complexas, pois pode carregar dados desnecessários em views que não precisam da variável.

Exemplo de view()->share():

public function boot()
{
    view()->share('estados', [
        'SP' => 'São Paulo',
        'PN' => 'Paraná',
        'AM' => 'Amazonas',
        'GO' => 'Goiás',
        'CE' => 'Ceará'
    ]);
}

Conclusão

O View Composer oferece uma maneira eficiente de compartilhar variáveis com múltiplas views sem repetir código, economizando tempo e melhorando a organização da aplicação. Em breve, abordaremos formas mais complexas de usar o View Composer, como por meio de classes.

Deixe um comentário

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

Rolar para cima