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 creazione 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 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, evitando così all'Utente di dover selezionare nuovamente l'Attrezzo. Nella app di esempio questa tecnica è utile sia nella creazione di una nuova Richiesta (che eredita l'identificativo dell'Attrezzo richiesto), sia nella creazione di un nuovo Prestito (che eredita l'identificativo della Richiesta cui risponde) e sia nella creazione di un nuovo Messaggio (che eredita la Richiesta cui si riferisce).
Ciò richiede l'installazione e l'attivazione del modulo aggiuntivo Entity Prepopulate. Attivato il modulo, servono due passaggi:
- predisporre il Campo "Attrezzo" della Richiesta a ricevere via link il codice identificativo dell'Attrezzo
- costruire nella pagina dell'Attrezzo un link di creazione della Richiesta che trasmetta quell'identificativo
Predisporre il Campo ad accettare un valore via link
Per predisporre il Campo "Attrezzo" della Richiesta a ricevere via link il codice identificativo dell'Attrezzo
- vai in Struttura - Tipi di contenuto - Richiesta - Gestisci Campi - Attrezzo - Modifica
- nella sezione Entity Prepopulate digita 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 elencati nella pagina di configurazione del Campo.
Costruire il link che trasmette il valore
Per costruire nella pagina dell'Attrezzo un link di creazione della Richiesta che trasmetta quell'identificativo procediamo (come già visto in una Guida precedente) ad aggiungere alla pagina dell'Attrezzo il comando "Chiedi in prestito questo Attrezzo" cui far corrispondere il link
/node/add/richiesta?attrezzo={{ raw_arguments.nid }}
dove il Token {{ raw_arguments.nid }} contiene l'identificativo dell'Attrezzo.
Se dovessimo passare alla pagina di inserimento di una Entità due o più valori destinati ad altrettanti Campi, il link diventerebbe:
/node/add/richiesta?argomento1=valore1&argomento2=valore2&argomento3=valore3
dove 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. 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 con 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 al caso della Vista "Miei Prestiti conclusi" che, nella app di esempio, viene utilizzata due volte:
- richiamata dal Cruscotto col link /miei-prestiti-conclusi, elenca tutti i Prestiti conclusi dell'Utente corrente
- richiamata dalla pagina di un Attrezzo col link /miei-prestiti-conclusi/{{ raw_arguments.nid }} dove il Token {{ raw_arguments.nid }} contiene l'identificativo dell'Attrezzo, elenca i Prestiti conclusi su quell'Attrezzo.
La Vista è la medesima in entrambi i casi, ma nel secondo caso riceve come Filtro contestuale l'identificativo dell'Attrezzo (vedi passaggio in grassetto):
| crea la Vista "Miei Prestiti conclusi" | 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 |
| imposta il link di richiamo della Vista | Nella sezione Impostazione pagina come Percorso digita "miei-prestiti-conclusi" |
| identifica 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" |
| identifica il Richiedente (Richiesta → Autore) | Nella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto, come Relazione seleziona "richiesta" e rinomina come "richiedente" |
| identifica 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" |
| identifica 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" |
| limita la Vista ai soli Prestiti su 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 |
| limita 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 |
| limita 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 |
| mostra le informazioni relative a Prestiti, Richieste, Attrezzi e Richiedenti | Nella sezione Campi mostra le informazioni relative
|
| esponi la 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 |
Se una Vista prevede più di un Filtro contestuale, i corrispondenti valori devono essere passati col link:
/pagina_della_vista/argomento1/argomento2/argomento3
dove il carattere / separa il percorso della Vista dagli argomenti e gli argomenti tra loro.