Como passar parâmetros para a view do Laravel

Confira nesse artigo como enviar informações da controladora para a view.

 Escrevendo testes automatizados com PHPUnit

Uma das funcionalidades da camada de visão é receber parâmetros, afinal, tudo o que é processado na controladora e que precisa ser entregue ao HTML, deve ser enviado para a visão.

Veremos aqui duas formas de passar parâmetros para a view utilizando o Laravel em sua versão 8.

Vamos partir do ponto que temos uma rota que chama o método index de uma controladora arbitrária. 

Route::prefix('photo')->group(function () {
    Route::get('/', [PhotoController::class, 'index'])->name('photo.index');
});

Vamos assumir também que a nossa blade espera por um array de frutas para percorrer uma lista não ordenada, conforme mostra o código a seguir

<ul>
	@foreach($items as $item)
                <li>{{$item}}</li>
	@endforeach
</ul>

Para enviar um array chamado $items, vamos utilizar a função compact do PHP. Basicamente ela recebe o nome das variáveis sem o $ (cifrão), assim criando um array associativo na qual podemos obter seu valor na Blade.

Veja o exemplo 1 abaixo.

public function index()
{

        $items = [
            'Pera',
            'Uva',
            'Maça',
            'Salada mista'
        ];

        $photos = Photo::all();

        return view('photo.index', compact('items', 'photos'));
}

Outra forma, é declarar um array associativo e passar os parâmetros no formato chave/valor, conforme podemos observar no exemplo 2.

public function index()
{
        return view('photo.index', [
            'items' => [
                'Pera',
                'Uva',
                'Maça',
                'Salada mista'
            ],
            'photos' => Photo::all()
        ]);
}

Em ambos os caros, precisamos informar os dados no segundo parâmetro no método view, sendo o primeiro o nome/caminho da blade e o segundo os dados a serem enviados.

return view('minha_pasta.meu_blade', $params);