di: Gabriele Farina 25 Gennaio 2007
In questa sede abbiamo già parlato di PHPTal e della semplicità e potenza di questa libreria che permette di utilizzare in PHP il famoso template system di Zope. L'autore della libreria non si è comunque limitato ad effettuare il porting della libreria di base e, per completezza, ha incluso anche i namespace ed i plugin aggiuntivi che hanno reso questo strumento una delle alternative più interessanti nell'ambito dei template engine.
METAL è uno di questi namespace e permette di aggiungere ai propri template il supporto per le macro. Le macro si comportano in modo molto simile alle funzioni; sono blocchi di codice TAL che possono essere richiamati da altre template e possono accettare dei parametri in ingresso.
Il namespace Metal aggiunge alcuni attributi molto interessanti a TAL, analizziamoli in dettaglio con qualche esempio:
Come già facilmente deducibile dal nome, questo attributo è semplicemente utilizzato per dichiarare una macro. Come già accennato in precedenza una macro è come una funzione o, più contestualmente un blocco di template, che è possibile richiamare in altre sedi senza doversi preoccupare di ripetere ogni volta il codice scritto ottenendo una buona riduzione delle operazioni ripetitive. Le macro ereditano le variabili utilizzabili dal contesto in cui sono richiamate.
<div metal:define-macro="user_box">
<ul>
<li tal:content="user/username">Username</li>
<a href="/edit_user">Modifica utente</a>
</ul>
<div>
Ultimo accesso: <span tal:content="user/last_access">Data dell'ultimo accesso</span>
</div>
</div>
Quando l'engine di PHPTal incontra un tag che contiene l'attributo metal:define-macro non effettua il rendering del codice in esso contenuto ma si limita a salvarlo in memoria in modo che sia possibile richiamarlo successivamente all'interno del template.
Con questo attributo si utilizza una macro definita in precedenza attraverso metal:define-macro. Il contenuto della macro richiamata viene quindi incluso come contenuto del tag che richiama la macro. L'attributo metal:use-macro accetta come valore il nome della macro da richiamare; è possibile anche richiamare macro definite in altri file utilizzando come valore il nome del file da cui recuperare la macro seguito da uno slash ('/')e dal nome della macro stessa.
<!--
Presupponiamo che alla template sia assegnato l'array user che
contiene i dati sull'utente corrente
-->
<div metal:define-macro="menu">
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="#" tal:content="custom_item">Item 2</a></li>
</ul>
</div>
<div metal:use-macro="macros.html/user_box" />
<div tal:define="custom_item string:voce custom"
metal:use-macro="menu" />
Ovviamente il valore dell'attributo può anche contenere delle variabili, richiamate usando la shortcut dell'operatore path: (${ ... }) che abbiamo visto nell'articolo precedente.
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |