PHP/Smarty: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
proseguo
Ramac (discussione | contributi)
finisco
Riga 75:
Ecco un esempio di un semplice template:
<source lang=html4strict>
{* questo è un commento Smarty. Non comparirà nella pagina HTML *}
<!-- i commenti HTML saranno invece visibili normalmente -->
<html>
<head>
Line 122 ⟶ 124:
</source>
Nel nostro template Smarty potremmo scrivere:
{$prodotti[1].nome} //{*stampa "Televisore"*}
{$prodotti[2].ID} //{*stampa "2"*}
Per accedere agli oggetti, invece, sarà sufficiente usare la sintassi <tt>$variabile->proprietà</tt> nel codice Smarty.
 
Alle variabili è possibile applicare i normali operatori aritmetici di PHP:
<source lang=htmlhtml4strict>
{$prezzo/100*(100-$sconto)} <!--{* applica lo sconto al prezzo -->*}
</source>
 
Line 134 ⟶ 136:
La variabile speciale <tt>$smarty</tt> permette di accedere a particolari valori:
*alle variabili superglobali di PHP get, post, cookies, server, environment e session
<source lang=htmlhtml4strict>
{$smarty.get.id} <!--mostra il valore di $_GET['id']-->
</source>
Line 146 ⟶ 148:
Alcuni dei modificatori più comuni sono, ad esempio:
* <tt>default</tt>: serve per indicare un valore di default nel caso la variabile sia vuota.
<source lang=htmlhtml4strict>
{$nome|default:Mario Rossi} <!-- se $nome è vuoto, verrà stampato "Mario Rossi -->
</source>
* <tt>lower</tt> e <tt>upper</tt> restituisce il valore della variabile rispettivamente tutto minuscolo e tutto maiuscolo; ad esempio, se la variabile <tt>$nome</tt> contiene "Mario Rossi":
<source lang=htmlhtml4strict>
{$nome|lower} <!-- restituisce "mario rossi" -->
{$nome} <!-- restituisce "Mario Rossi" -->
Line 156 ⟶ 158:
</source>
*<tt>truncate</tt>: tronca la parola al carattere indicato come primo argomento, concatenando alla fine la stringa indicata come secondo argomento:
<source lang=htmlhtml4strict>
{$nome|truncate:7:...} <!--{* restituisce "mario r..." -->*}
</source>
[[Categoria:PHP|Smarty]]
 
== Funzioni ==
{{Avanzamento|75%|29 dicembre 2008}}
Smarty mette inoltre a disposizione alcune '''funzioni''' per lavorare sui dati: vedremo le due più importanti, la funzione <tt>if</tt> e la funzione <tt>foreach</tt>.
 
=== if ===
La funzione <tt>'''if'''</tt> di Smarty è molto simili al costrutto <tt>if</tt> di PHP:
{if condizione}
...codice HTML se condizione è vera....
{else}
...codice HTML se condizione è falsa...
{/if}
 
Gli operatori logici e di confronto sono gli stessi disponibili in PHP:
<source lang=html4strict>
{if $prezzo > 300} <!-- applico uno sconto del 5% -->
<p>Prezzo totale: {$prezzo/100*95} &euro;</p>
{elseif $prezzo > 100} <!-- applico uno sconto del 10% -->
<p>Prezzo totale: {$prezzo/100*90} &euro;</p>
{else} <!-- applico uno sconto del 120% -->
<p>Prezzo totale: {$prezzo/100*80} &euro;</p>
 
<!-- se il cliente ha più di 18 anni e ha più di 10 acquisti mostro il link -->
{if $eta > 18 and $acquisti > 10}
<p>Scopri la nostra offerta! <a href="/registrati">Registrati ora!</a>
{/if}
 
<!-- se il cliente abita in Italia sconto del 5% sulle spedizioni -->
{if $nazione eq "it" }
<p>Per i residenti in Italia sconto 5% sulla spedizione!</p>
</source>
 
=== foreach ===
La funzione '''<tt>foreach</tt>''' permette di iterare sugli elementi di una variabile valorizzata con un array da PHP. La sua sintassi è:
{foreach from=$array item=elemento}
...codice...
{foreachelse}
...questo codice viene eseguito se $array è vuoto...
{/foreach}
dove <tt>$array</tt> è la variabile Smarty contenete un array e <tt>elemento</tt> 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 <tt>key</tt> che specifica il nome della variabile a cui assegnare la chiave.
 
Scrivere:
{foreach from=$array item=valore key=chiave}
è come scrivere in PHP:
foreach ( $array as $chiave => $valore )
 
Facciamo un esempio. Valorizziamo una variabile Smarty da PHP:
<source lang=php>$smarty->assign ( 'abba',
array(
array ( "nome" => "Björn", "cognome" => "Ulvaeus" ),
array ( "nome" => "Benny", "cognome" => "Andersson" ),
array ( "nome" => "Agnetha", "cognome" => "Fältskog",
array ( "nome" => "Anni-Frid", "cognome" => "Lyngstad" )
)
);</source>
Nel file Smarty potremo scrivere:
<source lang="html4strict">
<p>Ecco i quattro componenti degli ABBA:</p>
<ul>
{foreach from=$abba item=abba_componente}
<li>{$abba_componente.nome} {$abba_componente.cognome}</li>
{/foreach}
</source>
</ul>
 
È possibile assegnare un nome alle istruzioni foreach, usando il parametro <tt>name</tt>; sarà quindi possibile accedere alla variabile Smarty <tt>$smarty.foreach.nomeforeach</tt>, che contiene le proprietà relative al ciclo foreach, come ad esempio:
* <tt>iteration</tt>: restituisce il numero dell'iterazione corrente (alla prima esecuzione del ciclo conterrà 1, poi 2 e così via)
* <tt>first</tt> e <tt>last</tt>: restituiscono <tt>true</tt> se il ciclo è rispettivamente alla prima e all'ultima iterazione
 
== Collegamenti esterni ==
* [http://smarty.net Smarty.net], sito ufficiale del progetto Smarty
* [http://www.smarty.net/manual/it/ Manuale ufficiale completo in italiano]
 
[[Categoria:PHP|Smarty]]
{{Avanzamento|75100%|29 dicembre 2008}}