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);