Di seguito viene mostrato il contenuto del file index.phtml. Si tratta del template HTML associato alla home page del nostro sito, caricato automaticamente al termine dell'esecuzione di indexAction dell'IndexController. Sono presenti diverse istruzioni PHP ma tutte finalizzate a mostrare il contenuto dinamico, generalmente passato alla View dal Controller. In particolare l'indexController fornisce alla View l'array dei messaggi conservati nel FlashMessenger e l'array delle news estratto dal DB. Questi dati sono accessibili nel template attraverso $this->messaggi e $this->news.
Il template utilizza anche 2 importanti funzioni della View:
index.phtml
<?php echo $this->render('header.phtml'); ?>
<p class="errore"><?php echo $this->escape($this->messaggi[0])?></p>
<a href="<?php echo BASE_URL?>news/new/">Inserisci una news</a>
<?php if ($this->news): ?>
<?php foreach ($this->news as $news): ?>
<div class="news">
<h2><a href="<?php echo BASE_URL?>news/view/id/<?php echo $this->escape($news['news_id']) ?>/"><?php echo $this->escape($news['titolo']) ?></a></h2>
<div class="autore">di <?php echo $this->escape($news['autore']) ?> | <?php echo $this->escape($news['data']) ?></div>
<div class="modifica">
<a href="<?php echo BASE_URL?>news/edit/id/<?php echo $this->escape($news['news_id']) ?>/">Modifica</a>
-
<a href="<?php echo BASE_URL?>news/delete/id/<?php echo $this->escape($news['news_id']) ?>/">Cancella</a>
</div>
<p class="testo"><?php echo nl2br($this->escape($news['testo_intro'])) ?></p>
</div>
<?php endforeach; ?>
<?php else: ?>
<p>Nessuna news registrata.</p>
<?php endif; ?>
<?php echo $this->render('footer.phtml'); ?>
Si noti come nel precedente template vengono costruiti i link che permettono all'utente di visualizzare, inserire, modificare o cancellare una news. Viene utilizzata la costante BASE_URL come percorso comune a tutti gli URL, al quale viene accodato il nome del Controller (news) e della Action (new, view, edit e delete), secondo le convenzioni viste nei precedenti articoli, e se necessario un parametro "id" per identificare la news in questione. Il valore di tale parametro è fornito dal database e conservato nella variabile $news['news_id'].
Ecco il codice contenuto nei template che costituiscono header e footer di tutte le pagine della nostra applicazione web. Si notino i tag <title> e <h1> valorizzati dal contenuto di $this->titoloPagina.
header.phtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo $this->escape($this->titoloPagina)?></title>
<link rel="stylesheet" type="text/css" media="screen, handheld, print" href="<?php echo BASE_URL?>main.css" />
</head>
<body>
<div id="page">
<h1><?php echo $this->escape($this->titoloPagina)?></h1>
footer.phtml
</div>
</body>
</html>