Il compito del livello View è quello di rendere disponibili all'utente, in un formato a lui comprensibile, i risultati elaborati dalle action del livello controller. In Symfony la view è formata da diverse parti, ciascuna delle quali modificabile in base alle esigenze del programmatore.
I template
Il template è la rappresentazione dei dati elaborati da una determinata action in formato HTML con qualche riga di codice PHP immerso generalmente necessaria per il passaggio dei parametri dalle action e per richiamare gli helper (vedi di seguito).
Listato 7: Un esempio di template
<h1>Biblioteca Comunale</h1> <p>Nome: <?php echo $nome ?> Cognome: <?php echo $cognome ?></p> <ul>Indice operazioni: <li><?php echo link_to('Cerca libri', 'libri/ricerca') ?></li> <li><?php echo link_to('Inserisci nuovo libro', 'libri/inserimento') ?></li> </ul>
Di solito i template vengono realizzati da persone che curano gli aspetti legati alla GUI e non dai programmatori, dunque è buona norma limitare al minimo il codice PHP inserito in essi e cercare il più possibile di inserire la logica applicativa all'interno delle action. In questo modo si possono gestire anche più template per una singola acion evitando la duplicazione di codice scritto.
Il layout
Il layout è quella parte della view che contiene il codice HTML comune a tutte le pagine. In effetti in ogni progetto web possiamo notare come nella struttura generale di ogni pagina c'è una quantità di codice ripetuto in ciascuna di esse. Allora è piuttosto efficiente implementare un "contenitore" globale e inserire all'interno di questo le parti variabili delle diverse pagine web.
Questo "contenitore" è un file layout.php salvato all'interno della directory templates di ciascuna applicazione. La figura 4 mostra la composizione di una pagina web utilizzando layout e template. Per chiarire meglio questo concetto riportiamo nel listato 8 un esempio di file layout.php che utilizza il template del listato 7. La riga di codice inserita tra i tag <body> </body>
serve per ottenere il contenuto del template.
Listato 8: Un esempio di layout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <?php include_http_metas() ?> <?php include_metas() ?> <?php include_title() ?> <link rel="shortcut icon" href="/favicon.ico" /> </head> <body> <?php echo $sf_data->getRaw('sf_content') ?> </body> </html>
Symfony mette a disposizione una serie di variabili predefinite per accelerare la scrittura dei template che riportiamo nella tabella di seguito.
Variabile | Descrizione |
---|---|
$sf_context | Contiene un'istanza di sfContext |
$sf_request | Contiene un'istanza di sfRequest |
$sf_params | Contiene i parametri della richiesta |
$sf_user | Contiene un'istanza di sfUser |