Qual è la differenza tra with, compact e array in when return view in laravel

Oct 06 2020

Sono un po 'confuso, voglio sapere la differenza tra questi tre ritorni:

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

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

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

Quindi, qualcuno può spiegarmi la differenza in modo semplice.

Risposte

1 sta Oct 06 2020 at 08:18

Array : puoi passare un array di dati alle viste, in questo modo:

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

Quando si passano le informazioni in questo modo, i dati dovrebbero essere un array con coppie chiave / valore. All'interno della visualizzazione, è quindi possibile accedere a ciascun valore utilizzando la chiave corrispondente, ad esempio<?php echo $key; ?>


with () : in alternativa al passaggio di un array completo di dati alla funzione di supporto della vista , è possibile utilizzare il metodo with per aggiungere singole parti di dati alla vista:

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

compact () : invece di utilizzare questo tipo di passaggio di dati, è possibile utilizzarlo compact()per passare i dati. compact () è una funzione php incorporata che consente di creare un array con nomi di variabili e relativi valori. i nomi delle variabili devono essere passati alla funzione compact come argomento stringa e quindi riceverai un array , quindi compatto passando il varibale sulla tua vista come il primo metodo:

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

Vedere la documentazione ufficiale relativa al passaggio dei dati alle visualizzazioni

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

questi due sono gli stessi del view()secondo argomento null or array, compact è una funzione php che accetta variabili e genera array associativi basati su variabili

e

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

in questo codice view()l'helper laravel non ha un secondo argomento quindi puoi usare la funzione with () come metodo di concatenamento e inviare dati alla visualizzazione