Aggregazioni di Viste

Comporre pagine complesse assemblando diverse Viste in una pagina statica o dentro una Vista principale
Aggiornata il:

Nelle Guide precedenti abbiamo visto come assemblare una o più Viste (di tipo EVA) nella pagina di una Entità. Vediamo ora invece come assemblare più Viste dentro una semplice pagina di testo o dentro una Vista principale. Esemplifichiamo entrambi i metodi per costruire il Cruscotto messo a disposizione degli Utenti della nostra app di esempio

Il Cruscotto

La nostra app di esempio prevede una pagina "Cruscotto" che mostra all'Utente le informazioni ed i comandi essenziali per agire sia come Richiedente sia come Proprietario:

Informazioni e comandi per Cosa mostra il CruscottoMostrato dalla Vista
L'Utente in generaleIl nome dell'Utente, come link che porta al suo profilo, ad esempio per cambiare la passwordcomando_mio_profilo
Elenco degli ultimi Messaggi inviati all'Utente da altri Utenti, relativamente a sue Richieste o a Richieste altrui sui suoi Attrezziultimi_messaggi_pervenuti
L'Utente come Richiedente di Attrezzi altruiComando "Magazzino" che porta al Magazzino, in cui cercare Attrezzi da chiedere in prestitomie_richieste_aperte
Elenco delle Richieste aperte dall'Utente, con l'eventuale Prestito attivato non ancora concluso

Comando "Mie Richieste concluse" che porta all'elenco delle Richieste dell'Utente ormai concluse

L'Utente come Proprietario di Attrezzi Comando "Miei Attrezzi" che porta all'elenco degli Attrezzi dell'Utente ed al comando per aggiungerne di buovimiei_prestiti_aperti
Elenco delle Richieste aperte sugli Attrezzi dell'Utente, con l'eventuale Prestito concesso dall'Utente 
Comando "Miei Prestiti conclusi" che porta all'elenco delle Richieste sugli Attrezzi dell'Utente ormai concluse

Le Viste qui sopra elencate sono facilmente costruibili in analogia alle Viste fin qui costruite nelle precedenti Guide e non vengono qui ulteriormente spiegate. Vediamo come assemblarle in una sola pagina "Cruscotto" utilizzando due metodi alternativi, basati su due differenti moduli aggiuntivi.

Viste in una Pagina

Un primo metodo è basato sul modulo "Insert View", che consente di inserire una o più Vista dentro il Campo testuale di una qualunque Entità. Installato ed attivato questo modulo, per inserire una Vista in un Campo testo, basta digitare nel testo il Token

[view:name=display=args] 

in cui:

  • name è il nome ad uso interno della Vista, nome elencato da Struttura - Viste. E' l'unico parametro obbligatorio per questo Token.
  • display è il nome della Visualizzazione dentro la Vista, nome mostrato nella sezione Altro della Vista come Nome ad uso interno. Se la Vista ha una sola Visualizzazione, si può omettere questo parametro
  • args sono gli eventuali argomenti passati ai Filtri contestuali della Vista, separati da /. Se la Vista non prevede Filtri contestuali, su può omettere questo parametro dal Token 

Per creare il Cruscotto della app di esempio con questo metodo:

predisponi i Campi testo a riconoscere il Token [view]Vai in Configurazione - Formati testo e editor - Html completo - Configura e attiva Insert View
crea la pagina "Cruscotto"Con Contenuto - Aggiungi Contenuto - Pagina base crea una Pagina; come titolo digita "Cruscotto", come Formato del testo seleziona HTML completo, come Alias URL digita "/cruscotto". 
mostra le informazioni

Digita nel testo della pagina i Token corrispondenti alle Viste

[view:comando_mio_profilo] 

[view:ultimi_messaggi_pervenuti]

[view:mie_richieste_aperte]

[view:miei_prestiti_aperti]

intervallati se vuoi da testi fissi di spiegazione, immagini ecc.

Questo metodo è semplice e consente di mescolare le informazioni fornite dalla Viste con testi fissi, immagini ecc. Se però una delle Viste richiamate necessita di valori per i propri Filtri contestuali e questi valori non sono fissi ma dipendono dal contesto in cui la pagina viene richiamata, allora quasi sicuramente occorre passare al metodo successivo.

Viste in una Vista 

Un secondo metodo, più potente e leggermente più complesso, è basato sul modulo "Views Field View" che consente di aggiungere ad una Vista "principale" una o più Viste "secondarie". Installato ed attivato questo modulo, per inserire nella Vista principale una Vista secondaria basta aggiungere nella sezione Campi della Vista principale il nuovo tipo di Campo Visualizza - Globale - Embed a view as a field. This can cause slow performance, so enable some caching. selezionando poi la Vista secondaria e specificando gli eventuali argomenti da passarle.

La Vista principale può passare alle Viste secondarie qualunque valore noto nella Vista principale stessa, compresi eventuali valori a sua volta ricevuti. Si crea così una catena di Viste che richiamano Viste, che può essere profonda a piacere, ma che è opportuno limitare ad uno o due passaggi per non incorrere in rallentamenti eccessivi o in complessità tali delle interrogazioni sul database da mandare in errore la app.

Nella app di esempio, aggiungiamo una Vista "Cruscotto" basata sull'Utente corrente (in modo da essere certi che la Vista venga mostrata anche quando l'Utente non abbia ancora emesso o ricevuto Richieste) e dentro questa Vista principale richiamiamo le Viste che mostrano le informazioni sopra elencate:

crea la Vista "Cruscotto"vai in Struttura - Viste - Aggiungi nuova vista;  scegli il nome della Vista ("Cruscotto");  in Mostra scegli Utente; scegli di creare una Pagina e di mostrare il risultato come Elenco non formattato di campi.  
filtra la Vista sull'Utente correnteNella sezione Criteri del filtro aggiungi Corrente - Utente- Filtra la vista con l'utente attualmente autenticato, come operatore seleziona è uguale a e come è l'utente autenticato seleziona si
definisci il percorso con cui richiamare il CruscottoNella sezione Impostazione pagina come Percorso digita "/cruscotto"
mostra le informazioni

per ogni Vista sopra elencata:

  •  nella sezione Campi aggiungi Globale - Embed a view as a field. This can cause slow performance, so enable some caching
  • per un difetto attualmente presente in Drupal, conferma il Campo senza configurarlo e poi riaprilo per configurarlo
  • In Visualizza seleziona la Vista secondaria che vuoi richiamare (es "Miei Richieste aperte")
  • In Visualizzazione seleziona se necessario la specifica Visualizzazione nella Vista secondaria
  • In Filtri contestuali digita se necessario i valori da passare ai Filtri contestuali della Vista secondaria (nel nostro esempio, non ci sono). Al posto di valori fissi puoi usare i Token messi a disposizione dalla Vista principale, elencati sotto Schemi di sostituzione