Passaggio di variabili tra modelli
Questa guida spiega come si passano le variabili tra i template di Latte utilizzando vari tag come {include}
,
{import}
, {embed}
, {layout}
, {sandbox}
e altri. Imparerete anche come lavorare
con le variabili nei tag {block}
e {define}
e lo scopo del tag {parameters}
.
Tipi di variabili
Le variabili di Latte possono essere suddivise in tre categorie in base a come e dove vengono definite:
Le variabili di input sono quelle che vengono passate al template dall'esterno, ad esempio da uno script PHP
o utilizzando un tag come {include}
.
Le Variabili di contorno sono le variabili esistenti nella posizione di uno specifico tag. Queste includono tutte le
variabili di input e altre variabili create usando tag come {var}
, {default}
, o all'interno di un ciclo
{foreach}
.
Le Variabili esplicite sono quelle specificate direttamente all'interno di un tag e inviate al template di destinazione.
{block}
Il tag {block}
è usato per definire blocchi di codice riutilizzabili che possono essere personalizzati o estesi
in modelli ereditati. Le variabili circostanti definite prima del blocco sono disponibili all'interno del blocco, ma qualsiasi
modifica alle variabili si riflette solo all'interno del blocco.
{define}
Il tag {define}
è usato per creare blocchi che vengono resi solo quando vengono chiamati usando
{include}
. Le variabili disponibili all'interno di questi blocchi dipendono dalla presenza o meno di parametri nella
definizione. Se i parametri sono specificati, solo quelli sono accessibili. In caso contrario, sono accessibili tutte le
variabili di input del template in cui sono definiti i blocchi.
{parameters}
Il tag {parameters}
è usato per dichiarare esplicitamente le variabili di input attese all'inizio del template.
In questo modo, è possibile documentare facilmente le variabili attese e i loro tipi di dati. È anche possibile definire valori
predefiniti.
{include file}
Il tag {include file}
è usato per inserire un intero template. A questo template vengono passate sia le
variabili di input del template in cui viene usato il tag, sia variabili definite esplicitamente. Tuttavia, il template di
destinazione può limitare l'ambito utilizzando {parameters}
.
{include block}
Quando si inserisce un blocco definito nello stesso modello, gli vengono passate tutte le variabili circostanti ed esplicitamente definite:
In questo esempio, le variabili $name
e $age
vengono passate al blocco blockName
. Lo
stesso comportamento si applica a {include parent}
.
Quando si inserisce un blocco da un altro template, vengono passate solo le variabili di input e quelle definite esplicitamente. Le variabili circostanti non sono automaticamente disponibili.
{layout}
o {extends}
Questi tag definiscono un layout a cui passano le variabili di input del template figlio e le variabili create nel codice prima dei blocchi:
Template layout.latte
:
{embed}
Il tag {embed}
è simile al tag {include}
, ma consente di incorporare blocchi nel template.
A differenza di {include}
, vengono passate solo le variabili dichiarate esplicitamente:
In questo esempio, il template menu.latte
ha accesso solo alla variabile $items
.
Al contrario, i blocchi all'interno di {embed}
hanno accesso a tutte le variabili circostanti:
{import}
Il tag {import}
è usato per caricare blocchi da altri template. Ai blocchi importati vengono passati sia input
che variabili dichiarate esplicitamente.
{sandbox}
Il tag {sandbox}
isola il template per un'elaborazione sicura. Le variabili sono passate esclusivamente in modo
esplicito.