Campi condizionati
Oltre ai Filtri (esposti, nascosti, contestuali) illustrati nelle Guide precedenti, esistono altri metodi in Drupal per alterare il risultato mostrato da una Vista. In particolare, in questa Guida vediamo come modificare la visualizzazione dei Campi di una Vista in base al valore degli altri Campi, grazie ai Campi "condizionati". Mentre i Filtri intervengono sulle "righe" della Vista selezionando quali Entità mostrare, i Campi condizionati intervengono sulle "colonne" della Vista selezionando quali dati mostrare di ogni singola Entità in base al valore di altri Campi dell'Entità stessa.
Per utilizzare i Campi condizionati è necessario installare ed attivare il modulo aggiuntivo "Views Conditional", che aggiunge il nuovo tipo di Campo Views Conditional - Viste - Output data based off of certain criteria .
Quando si aggiunge un Campo condizionato nella sezione Campi della Vista, devi specificarne i seguenti parametri:
| if this field | Seleziona il Campo "condizionante" il cui valore stabilisce cosa mostrare nel Campo condizionato. Sono selezionabili tutti i Campi che precedono il Campo condizionato nell'elenco dei Campi, es. il Campo "Prezzo", che contiene il prezzo di una Entità |
| Is... | Seleziona l'Operatore da applicare al valore del Campo condizionante: "vuoto", "non vuoto", "maggiore di", "inizia per" ecc. |
| This value | Digita il Valore da confrontare col valore del Campo condizionante. Puoi digitare un valore fisso (es. "1000") oppure un Token corrispondente ad uno dei Campi che precedono il Campo condizionato. I Token disponibili sono elencati sotto Replacement Variables |
| Then output this | Digita il valore assegnato al Campo condizionato se la condizione formata dal valore del Campo condizionante + Operatore + valore da confrontare è VERA. Es. se il Campo "Prezzo" ha valore "2000", Operatore è "maggiore di" e il valore da confrontare è "1000", nel Campo condizionato appare è il valore scritto nel parametro Then output this , es. "prezzo elevato". In questo parametro puoi anche digitare un mix di valori fissi e Token, es. "prezzo elevato, pari a {{ field_prezzo }}", che verrà mostrato come "prezzo elevato, pari a 2000". |
| Otherwise output this | Digita il valore assegnato al Campo condizionato se la condizione formata dal valore del Campo condizionante + Operatore + valore da confrontare è FALSA, es. "prezzo nella norma". |
Il risultato di un Campo condizionato così impostato è il seguente:
| Campo "Fornitore" | Campo "Prezzo"(nascosto) | Campo "Valutazione" condizionato |
| Rossi Srl | 1200 | Prezzo elevato, pari a 1200 euro |
| Bianchi & Figli | 960 | Prezzo nella norma, pari a 960 |
Esempio di utilizzo
Nella Guida precedente avevamo costruito la Vista EVA "Comandi Richiesta Proprietario" che mostra al solo Proprietario dell'Attrezzo nella pagina della Richiesta i comandi "Cruscotto" e "Presta questo Attrezzo". Avevamo lasciato in sospeso il problema di non mostrare il comando "Presta questo Attrezzo" se esiste già un Prestito associato alla Richiesta. Il problema poteva essere risolto spezzando la Vista in due Viste: una che mostra il comando "Miei Attrezzi" filtrata solo sul Proprietario e un'altra che mostra il comando "Presta questo Attrezzo" filtrata sul Proprietario e sulla inesistenza del Prestito associato alla Richiesta.
Per evitare di avere due Viste, coi conseguenti problemi di allineamento visivo tra i due comandi e per motivi didattici, vediamo come risolvere il problema con una sola Vista usando i Campi condizionati. Ecco come modificare la sezione Campi della Vista "Comandi Richiesta Proprietario":
| A | identifica l'eventuale Prestito associato alla Richiesta e nascondilo | Nella sezione Campi aggiungi Titolo - Contenuto e in Relazione seleziona "Prestito". Attiva Escludi dalla visualizzazione |
| B | predisponi il comando "Presta questo Attrezzo" e nascondilo | Nella sezione Campi aggiungi Testo personalizzato - Globale - Fornisce testo o link personalizzato, come Testo digita "Presta questo Attrezzo", in Risultati di riscrittura attiva Mostra questo campo come un collegamento personalizzato, come Percorso del link digita "/node/add/prestito?richiesta={{ raw_arguments.nid }}" e come Classe del link digita "btn btn-primary". Attiva Escludi dalla visualizzazione |
| C | se il Prestito non esiste mostra il comando "Presta questo Attrezzo" | Nella sezione Campi aggiungi Views Conditional - Viste - Output data based off of certain criteria. Se il titolo del Prestito (contenuto nel Campo A) è vuoto e quindi il Prestito non è stato ancora concesso, mostra qui il contenuto del Campo B, che contiene il comando "Presta questo attrezzo" col suo link e che corrisponde al Token {{ nothing }} elencato in Replacement Variables). Se invece il titolo del Prestito non è vuoto e quindi il Prestito è stato concesso, non mostrare nulla. Ecco come si traduce nei parametri del Campo C condizionato: Come if this field seleziona (Prestito) Contenuto - Titolo. Come Is seleziona Empty. Come This value non scrivere nulla. Come Then output this digita {{ nothing }}. Come Otherwise output this non digitare nulla |
Concatenazione di Campi condizionati
Per gestire casi più complessi, è possibile concatenare più Campi condizionati. Poiché un Campo condizionato è trattato da Drupal esattamente come i Campi "nativi" delle Entità gestite nella Vista, anche al Campo condizionato corrisponde un Token di nome {{ views_conditional_field }}, che può essere utilizzato come parametro nella impostazione di un secondo Campo condizionato, il cui valore dipenderà quindi dal valore del primo Campo condizionato. La concatenazione può estendersi a tre o più Campi condizionati, il cui Token sarà {{ views_conditional_field }}, {{ views_conditional_field_1 }}, {{ views_conditional_field_2 }} ecc.