La condizionalità in Giotto esiste in due forme complementari:
- i blocchi condizionali
-
le funzioni condizionali,
nella guida collegata puoi vedere la sintassi e viversi esempi, gli attributi principali sono i seguenti:
Blocchi di condizione
I costrutti mn:if / mn:elseif / mn:else mostrano o nascondono un elemento HTML in base al risultato di un'espressione.
| Opzione | Descrizione | Esempio |
| mn:if | Applica una condizione di visibilità semplice. | <div mn:if="contact.values.SESSO eq 'M'">Offerta speciale riservata agli uomini</div> |
| mn:elseif | Mostra un contenuto alternativo se il primo if non è verificato. | <div mn:if="contact.values.SESSO eq 'M'"> Offerta speciale riservata agli uomini</div> <div mn:elseif="contact.values.SESSO eq 'F'"> Offerta speciale riservata alle donne</div> |
| mn:else | Mostra un contenuto alternativo se non sono verificati nè l'if nè l'elseif. | <div mn:if="contact.values.SESSO eq 'M'"> Offerta speciale riservata agli uomini</div> <div mn:elseif="contact.values.SESSO eq 'F'"> Offerta speciale riservata alle donne</div> <div mn:else>Non hai specificato il tuo sesso <div> |
ESEMPIO 1
Inserendo il seguente codice direttamente nell'area di modifica di un elemento testo (nella vista del codice),
se il campo NAME è valorizzato viene stampato "Ciao Andrea,"
se il campo NAME è vuoto viene stampato solo "Ciao,"
<span mn:if="contact.values.NAME neq ''">Ciao [contect:NAME]<span>
<span mn:else>Ciao,</span>ESEMPIO 2
Nell'esempio sottostante vogliamo stampare il nome della storeview di appartenenza in base al campo STOREVIEW che a database è salvata usando i codici
<span mn:if="contact.values.STOREVIEW eq '1'">Italia</span>
<span mn:elseif="contact.values.STOREVIEW eq '2'">EUROPA</span>
<span mn:elseif="contact.values.STOREVIEW eq '3'">AMERICHE</span>
<span mn:else>WORLDWIDE</span>
Funzioni condizionali (espressione condizionale inline)
La funzione condizionali restituisce un valore o l'altro all'interno di un'espressione.
SINTASSI
fn.if(condizione, valoreSeVero, valoreSeFalso)
ESEMPIO:
[eval:expr value="fn.if(contact.values.LINGUA eq 'ita', 'Pizzaiolo', 'baker')"]
Nell'esempio soprastante se il contatto ha il campo LINGUA = ITA, viene stampata la parola "Pizzaiolo", in alternativa la parola "Baker"
Le fn.if possono essere annidate (catena if/elseif):
La condizione deve risolversi in un valore booleano (true/false, 0/1) o in una stringa equivalente ('0'/'1'/'true'/'false'); altri valori generano un errore di valutazione.