Campi condizionati nelle Viste

Modificare la visualizzazione di Campi nella Vista in base al valore di altri Campi.
Aggiornata il:

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 fieldSeleziona 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 valueDigita 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 thisDigita 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 Srl1200Prezzo elevato, pari a 1200 euro
Bianchi & Figli960Prezzo 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":

Aidentifica l'eventuale Prestito associato alla Richiesta e nascondiloNella sezione Campi aggiungi Titolo - Contenuto e in Relazione seleziona "Prestito". Attiva Escludi dalla visualizzazione 
Bpredisponi il comando "Presta questo Attrezzo" e nascondiloNella 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
Cse 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.