Zend Framework Tutorial - 4

template, header e footer

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:

  • $this->render('nome_template.phtml') serve ad includere nell'attuale template un ulteriore template, operazione analoga al classico include() di PHP. In questo modo vengono caricati header.phtml e footer.phtml, i 2 template che costituiscono l'intestazione ed il piè di pagina di tutte le pagine del nostro sito.
  • $this->escape($stringa) serve a convertire i caratteri illeciti per una pagina HTML in entità HTML, come ad esempio i caratteri < e >. L'utilizzo di $this->escape al posto del classico html_special_chars è da preferire poiché il suo comportamento si adegua in maniera trasparente al set di caratteri impostato nella 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>
Effettua l'accesso o registrati per inserire un commento