Qual é a diferença entre with, compact e array in when return view in laravel
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
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
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