Qual é a diferença entre with, compact e array in when return view in laravel

Oct 06 2020

Estou um pouco confuso, quero saber a diferença entre esses três retornos:

return view('post', ['post' => $post]);

return view('post', compact('post'));

return view('post')->with('post'=>$post);

Então, alguém pode me explicar a diferença de maneira fácil.

Respostas

1 sta Oct 06 2020 at 08:18

Array : você pode passar uma matriz de dados para visualizações, como este:

return view('post', ['post' => $post]);

Ao passar informações dessa maneira, os dados devem ser uma matriz com pares de chave / valor. Dentro de sua visualização, você pode acessar cada valor usando sua chave correspondente, como<?php echo $key; ?>


with () : Como alternativa para passar uma matriz completa de dados para a função auxiliar de visualização , você pode usar o método with para adicionar dados individuais à visualização:

return view('post')->with('post' => $post); // multiple with method return view('post')->with('post' => $post)->with('comment' => $comment);

compact () : Em vez de usar este tipo de transmissão de dados, você pode usar compact()para transmissão de dados. compact () é uma função php embutida que permite criar um array com nomes de variáveis ​​e seus valores. nomes de variáveis ​​devem ser passados ​​para a função compacta como argumento de string e, em seguida, você receberá uma matriz , então compacta passando o varibale em sua visualização como o primeiro método:

return view('post', compact('post'));
// same as
return view('post', ['post' => $post]);

Veja a documentação oficial de Passing Data To Views

KamleshPaul Oct 06 2020 at 07:12
return view('post', ['post' => $post]);
return view('post', compact('post'));

estes dois são os mesmos que o view()segundo argumento pode ser null or array, compact é uma função php que pega a variável e gera um array associativo baseado na variável

e

return view('post')->with('post'=>$post);

neste código, o view()auxiliar laravel não tem um segundo argumento, então você pode usar a função with () como método de encadeamento e enviar dados para visualizar