In questa Guida vediamo come passare informazioni tra le pagine della app, in particolare come passare attraverso un link:
- uno o più valori alla pagina di inserimento o modifica di una Entità per precaricarne i Campi, esemplificato al caso della pagina di creazione di una nuova Richiesta
- uno o più valori ad una Vista, per filtrare le Entità elencate, esemplificato al caso della pagina che elenca i Prestiti conclusi effettuati dall'Utente corrente su uno specifico Attrezzo
Precaricare Campi di una Entità attraverso un link
In molte situazioni è utile precaricare attraverso un link uno o più Campi di una nuova Entità, per evitare all'Utente di selezionare nuovamente valori già noti dal contesto. Ad esempio, vogliamo che il comando "Chiedi in prestito questo Attrezzo" lanciato dalla pagina di un Attrezzo A precarichi nella nuova Richiesta il Campo "Attrezzo" con l'identificativo dell'Attrezzo A.
Nella app di esempio questa tecnica è utile no solo nella creazione di una nuova Richiesta (che eredita l'identificativo dell'Attrezzo richiesto) ma anche nella creazione di un nuovo Prestito (che eredita l'identificativo della Richiesta cui risponde) e di un nuovo Messaggio (che eredita la Richiesta cui si riferisce).
Ciò è reso possibile dal modulo aggiuntivo Entity Prepopulate che quindi deve essere installato ed attivato.
Attivato il modulo, servono due passaggi:
- configurare il Campo "Attrezzo" delle Richieste a ricevere un valore dal link
- configurare il link perché trasmetta quel valore
Per configurare il Campo:
- vai in Struttura - Tipi di contenuto - Richiesta - Gestisci Campi - Attrezzo - Modifica
- nella sezione Entity Prepopulate scrivi il Token [current-page:query:attrezzo]
Il Token [current-page:query:attrezzo] dice a Drupal di prelevare dal link ("query") della pagina corrente ("current_page") il valore associato all'argomento "attrezzo". Come sempre, non è necessario ricordare questo Token a memoria, perché è tra quelli consultabili dalla pagina di configurazione del Campo.
Predisposto il Campo "Attrezzo" della nuova Richiesta a ricevere il valore dell'argomento "attrezzo" scritto nel link, come già abbiamo visto in una Guida precedente costruiamo nella pagina dell'Attrezzo il comando "Chiedi in prestito questo Attrezzo" che corrisponde al link:
/node/add/richiesta?attrezzo={{ raw_arguments.nid }}
dove il Token contiene l'identificativo dell'Attrezzo.
Se dobbiamo passare ad una pagina di inserimento di una Entità due o più valori, destinati ad altrettanti Campi, il link diventa:
/node/add/richiesta?argomento1=valore1&argomento2=valore2&argomento3=valore3
Il carattere ? inizia l'elenco delle coppie argomento/valore, il carattere = associa l'argomento al suo valore ed il carattere & separa le diverse coppie tra loro
Filtrare una Vista attraverso il link: i Filtri contestuali
Un altro caso molto frequente nella costruzione di una app è filtrare l'elenco delle Entità di una Vista con valori scritti nel link di richiamo della Vista.
Ad ognuno dei valori scritti nel link deve corrispondere un Filtro contestuale, cioè un Filtro scritto nella sezione Filtri contestuali della Vista, anziché nella sezione Criteri del filtro. Mentre un Filtro scritto nella sezione Criteri del Filtro prende il valore di confronto dalla configurazione stessa della Vista (Filtro "nascosto") o lo chiede all'Utente (Filtro esposto), un Filtro contestuale prende il valore dal link on cui viene richiamata la Vista. I valori devono essere scritti nel link nel medesimo ordine con cui i corrispondenti Filtri sono elencati nella sezione Filtri contestuali.
Applichiamo questo metodo generale al caso della Vista "Miei Prestiti conclusi" che, come si vede in figura, viene utilizzata due volte nella app di esempio: se richiamata dal Cruscotto, elenca tutti i Prestiti dell'Utente conclusi; se richiamata dalla pagina di un Attrezzo, elenca tutti i Prestiti dell'Utente conclusi su quell'Attrezzo. La Vista è la stessa in entrambi i casi, ma nel secondo caso deve essere filtrata passando alla Vista l'identificativo dell'Attrezzo.
Costruiamo la Vista "Miei Prestiti Conclusi" che elenca tutti i Prestiti effettuati dall'Utente corrente e conclusi.
| per creare la Vista | Vai in Struttura - Viste - Aggiungi nuova vista e scegli il nome della vista ("Miei Prestiti Conclusi"); in Mostra scegli contenuto di tipo "Prestito"; scegli di creare una Pagina e di mostrare il risultato come Tabella |
| per impostare il link di richiamo della Vista | Nella sezione Impostazione pagina come Percorso digita "miei-prestiti-conclusi" |
| per identificare la Richiesta cui il Prestito risponde (Prestito → Richiesta) | Nella sezione Relazioni aggiungi Contenuto referenziato da field_richiesta - Contenuto - Appare in: prestito e rinomina come "richiesta" |
| per identificare il Richiedente (Richiesta → Autore) | Nella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto, come Relazione seleziona "richiesta" e rinomina come "richiedente" |
| per identificare l'Attrezzo prestato (Richiesta → Attrezzo) | Nella sezione Relazioni aggiungi Contenuto referenziato da field_attrezzo - Contenuto - Appare in: richiesta, come Relazione seleziona "richiesta" e rinomina come "attrezzo" |
| per identificare il Proprietario dell'Attrezzo (Attrezzo → Autore) | Nella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto, come Relazione seleziona "attrezzo" e rinomina come "proprietario" |
| per limitare la Vista ai soli Prestiti relativi ad un Attrezzo, se specificato nel link di richiamo della Vista | Nella sezione Filtri contestuali aggiungi ID - Contenuto e come Relazione seleziona "attrezzo"; come Quando il valore del filtro NON è nell'URL seleziona Mostra tutti i risultati per il campo specifico |
| per limitare la Vista ai soli Prestiti conclusi | Nella sezione Criteri del filtro aggiungi Restituzione (field_restituzione) - Contenuto - Appare in: prestito. e come operatore seleziona non è vuoto |
| per limitare la Vista ai soli Prestiti effettuati dal Proprietario dell'Attrezzo | Nella sezione Criteri del filtro aggiungi Corrente - Utente- Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si |
| per mostrare le informazioni relative a Prestiti, Richieste, Attrezzi e Richiedenti e predisporre la ricerca nella Vista | Nella sezione Campi cambia l'etichetta del Campo "titolo" in "Prestito"; aggiungi i Campi "Consegna" e "Restituzione"; aggiungi "titolo", come Relazione seleziona "richiesta" e cambia etichetta in "Richiesta"; aggiungi "nome", come Relazione seleziona "richiedente" e cambia etichetta in "Richiedente"; aggiungi "titolo", come Relazione seleziona "attrezzo" e cambia etichetta in "Attrezzo"; aggiungi il Campo "Nota" e nascondilo; aggiungi il Campo "Nota", come Relazione seleziona "richiesta" e nascondilo |
| per offrire la funzione di ricerca nella Vista | Nella sezione Criteri del filtro aggiungi Combina filtri dei campi, attiva Esponi questo filtro, come operatore seleziona Contiene ogni parola, in Scegli i campi da combinare per il filtraggio seleziona tutti i Campi elencati |
Il comando "Prestiti conclusi sull'Attrezzo" presente nella pagina dell'Attrezzo richiama quindi questa Vista col link:
/miei-prestiti-conclusi/{{ raw_arguments.nid }}
dove il Token {{ raw_arguments.nid }} contiene l'identificativo dell'Attrezzo., che viene utilizzato dal Filtro contestuale per limitare la Vista ai soli Prestiti conclusi che si riferiscono a quell'Attrezzo.
Il comando "Miei Prestiti conclusi" presente nel Cruscotto richiama la Vista senza specificare un Attrezzo:
/miei-prestiti-conclusi
così che la Vista elenchi tutti i Prestiti conclusi dell'Utente corrente su tutti i suoi Attrezzi.
Se una Vista ha più di un Filtro contestuale, per passarle i corrispondenti valori verrà richiamata col link:
/pagina_della_vista/argomento1/argomento2/argomento3
dove il carattere / separa il percorso della Vista dagli argomenti e gli argomenti tra loro.
