PHP/Smarty: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m →‎top: replaced: {{PHP}} → <noinclude>{{PHP}}</noinclude> using AWB
Gian BOT (discussione | contributi)
m Bot: sostituzione tag obsoleti
Riga 10:
Per prima cosa installiamo sul nostro disco rigido i file necessari:
#Decomprimere l'archivio .tar.gz o .zip che avete appena scaricato in una cartella dei temporanea
#Creare una cartella dove contenere i sorgenti di Smarty, preferibilmente esterna alla root del vostro server (in questo modo i file non saranno accessibili dalla rete). Ad esempio può essere posizionata tra i file delle librerie di PHP (<ttcode>/usr/local/lib/php/Smarty</ttcode>)
#Copiare, nella cartella appena creata, il contenuto della sottocartella <ttcode>Smarty-[versione]/libs/</ttcode> che avete estratto prima.
Ora è necessario impostare alcune cartelle nel web server. Nella nostra root del web server (ad esempio <ttcode>/var/www/</ttcode>) creiamo una cartella <ttcode>smarty</ttcode> e quattro sottocartelle <ttcode>smarty/templates</ttcode>, <ttcode>smarty/config</ttcode>, <ttcode>smarty/templates_c</ttcode> e <ttcode>smarty/cache</ttcode>. Assegnate alle ultime due cartelle <ttcode>cache</ttcode> e <ttcode>templates_c</ttcode> i permessi di scrittura in modo che possano essere scritte dal web server:
$> chmod 775 smarty/cache
$> chmod 775 smarty/templates_c
Riga 32:
 
=== Installazione su Windows ===
Per prima cosa, estraiamo i file in una cartella, preferibilmente esterna alla root del web server, ad esempio <ttcode>C:\Smarty-[versione]</ttcode>, e rinominamo la cartella in <ttcode>C:\smarty</ttcode> che avrà una struttura simile a questa:
* cache
* demo
Riga 44:
In questo modo sarà possibile richiamare i file delle librerie di Smarty ogni volta che si vuole.
 
Ora è necessario impostare alcune cartelle sul vostro web server: create nella www root una cartella <ttcode>smarty</ttcode> e quattro sottocartelle <ttcode>smarty/templates</ttcode>, <ttcode>smarty/config</ttcode>, <ttcode>smarty/templates_c</ttcode> e <ttcode>smarty/cache</ttcode>. Assegnate alle ultime due cartelle <ttcode>cache</ttcode> e <ttcode>templates_c</ttcode> i permessi di scrittura in modo che possano essere scritte dal web server.
 
Ora è tutto pronto per utilizzare Smarty:
Riga 99:
Se è stato impostato tutto correttamente, caricando la nostra pagina prova_smarty.php otterremo una semplice pagina HTML con titolo "Pagina di prova creata con Smarty" e con una sola frase "Questa è una bellissima pagina".
 
Cos'è successo? Nel template abbiamo posto alcuni tag particolari (<ttcode>{$titolo}</ttcode> e <ttcode>{$contenuto}</ttcode>). Nel linguaggio dei template di Smarty queste diciture indicano delle '''variabili''' che devono essere riempite con dei valori dal codice PHP. Nel codice PHP, infatti, abbiamo usato il metodo <ttcode>assign</ttcode> dell'oggetto Smarty per assegnare alle variabili ''titolo'' e ''contenuto'' i rispettivi valori.
 
== Variabili ==
Lo scopo delle '''variabili''' è principalmente quello di passare dei valori dal codice PHP al template Smarty, tramite il metodo <ttcode>assign</ttcode>:
<source lang="php">
$smarty->assign('titolo', 'Prodotti') //valorizza la variabile "titolo"
Riga 126:
{$prodotti[1].nome} {*stampa "Televisore"*}
{$prodotti[2].ID} {*stampa "2"*}
Per accedere agli oggetti, invece, sarà sufficiente usare la sintassi <ttcode>$variabile->proprietà</ttcode> nel codice Smarty.
 
Alle variabili è possibile applicare i normali operatori aritmetici di PHP:
Riga 134:
 
=== La variabile $smarty ===
La variabile speciale <ttcode>$smarty</ttcode> permette di accedere a particolari valori:
*alle variabili superglobali di PHP get, post, cookies, server, environment e session
<source lang=html4strict>
Riga 144:
 
=== Modificatori ===
I '''modificatori''' consentono di intercettare il valore di una variabile da stampare e lo restituiscono opportunatamente modificato; per usarli basta inserirli dopo il nome della variabile separati da un pipe (<ttcode>|</ttcode>) e separando gli argomenti con <ttcode>:</ttcode>.
 
Alcuni dei modificatori più comuni sono, ad esempio:
* <ttcode>default</ttcode>: serve per indicare un valore di default nel caso la variabile sia vuota.
<source lang=html4strict>
{$nome|default:Mario Rossi} <!-- se $nome è vuoto, verrà stampato "Mario Rossi -->
</source>
* <ttcode>lower</ttcode> e <ttcode>upper</ttcode> restituisce il valore della variabile rispettivamente tutto minuscolo e tutto maiuscolo; ad esempio, se la variabile <ttcode>$nome</ttcode> contiene "Mario Rossi":
<source lang=html4strict>
{$nome|lower} <!-- restituisce "mario rossi" -->
Riga 157:
{$nome|upper} <!-- restituisce "MARIO ROSSI" -->
</source>
*<ttcode>truncate</ttcode>: tronca la parola al carattere indicato come primo argomento, concatenando alla fine la stringa indicata come secondo argomento:
<source lang=html4strict>
{$nome|truncate:7:...} {* restituisce "mario r..." *}
Riga 163:
 
== Funzioni ==
Smarty mette inoltre a disposizione alcune '''funzioni''' per lavorare sui dati: vedremo le due più importanti, la funzione <ttcode>if</ttcode> e la funzione <ttcode>foreach</ttcode>.
 
=== if ===
La funzione <ttcode>'''if'''</ttcode> di Smarty è molto simile al costrutto <ttcode>if</ttcode> di PHP:
{if condizione}
...codice HTML se condizione è vera....
Riga 193:
 
=== foreach ===
La funzione '''<ttcode>foreach</ttcode>''' permette di iterare sugli elementi di una variabile valorizzata con un array da PHP. La sua sintassi è:
{foreach from=$array item=elemento}
...codice...
Riga 199:
...questo codice viene eseguito se $array è vuoto...
{/foreach}
dove <ttcode>$array</ttcode> è la variabile Smarty contenete un array e <ttcode>elemento</ttcode> il nome della variabile che conterrà ad ogni iterazione il valore di un elemento dell'array.
 
Con gli array associativi si usa la stessa sintassi, con l'aggiunta del parametro <ttcode>key</ttcode> che specifica il nome della variabile a cui assegnare la chiave.
 
Scrivere:
Riga 227:
</ul>
 
È possibile assegnare un nome alle istruzioni foreach, usando il parametro <ttcode>name</ttcode>; sarà quindi possibile accedere alla variabile Smarty <ttcode>$smarty.foreach.nomeforeach</ttcode>, che contiene le proprietà relative al ciclo foreach, come ad esempio:
* <ttcode>iteration</ttcode>: restituisce il numero dell'iterazione corrente (alla prima esecuzione del ciclo conterrà 1, poi 2 e così via)
* <ttcode>first</ttcode> e <ttcode>last</ttcode>: restituiscono <ttcode>true</ttcode> se il ciclo è rispettivamente alla prima e all'ultima iterazione
 
== Collegamenti esterni ==