In Symfony, come in molti altri framework MVC (Model-View-Controller), le View sono responsabili della presentazione dei dati all’utente e sono anche i componenti con cui l’utente generalmente interagisce. Le view trasformano i dati forniti dal controller in un formato leggibile, solitamente un file HTML, che può essere visualizzato nel browser dall’utente.
Symfony utilizza un motore di template chiamato “Twig” per gestire le view, che approfondiremo più avanti.
La cartella del progetto preposta alla gestione dei template delle view è templates/. All’interno di questa cartella, i template possono essere ulteriormente organizzati in sottocartelle in base alla loro funzione o al modulo dell’applicazione a cui appartengono.
In Symfony, la comunicazione tra il controller e la view è fondamentale per visualizzare dati dinamici e personalizzare l’output per l’utente. Il metodo principale utilizzato per passare dati dal controller alla view è render(). Questo metodo accetta due argomenti principali:
- il primo è obbligatorio ed è il percorso del template Twig da renderizzare
- Il secondo è opzionale ed è un array associativo (coppie chiave-valore) di variabili che possono essere utilizzate all’interno del template.
Effettivamente, se riprendiamo il codice del controller associato alla route hello, generato con il comando make
#[Route('/hello', name: 'app_hello', methods: ['GET', 'HEAD'])] public function index(): Response { return $this->render('hello/index.html.twig', [ 'controller_name' => 'HelloController', ]); }
notiamo l’invocazione del metodo render. A tale metodo vengono passati il nome del template da utilizzare hello/index.html.twig ed un array con all’interno la chiave controller_name associata al valore di tipo stringa HelloController.
Nel template Twig viene utilizzata la variabile controller_name per stamparla a video come mostrato nello snippet seguente:
<div class="example-wrapper"> <h1>Hello {{ controller_name }}! ✅</h1>
Le variabili passate ad un template possono essere stringhe, array o oggetti.