Indice

🟦Pronta 🟨Bozza 🟥Da scrivere

I Campi

Campi delle Entità. Campi predefiniti. Campi aggiunti. Nomi interni ed esterni dei Campi. Campi obbligatori e multivalore. Tipi di Campi. Formati di testo. Riferimenti tra Entità.
Aggiornata il:
Stato: 🟦Pronta

Campi delle Entità

Le informazioni contenute in una Entità sono memorizzate nei suoi Campi. Usando una metafora, l'Entità è una cassettiera ed ogni suo Campo è un cassetto in grado di memorizzare uno specifico tipo di informazione. 

Campi predefiniti

Come abbiamo già visto, ad ogni Entità è associato un identificativo univoco, memorizzato in un Campo predefinito, sempre presente in tutti i tipi di Entità. Oltre a quel Campo, ogni tipo di Entità ha altri Campi predefiniti. Ad esempio:

  • gli Utenti hanno i Campi predefiniti Nome utente, Password, Email. 
  • i Termini di Tassonomia hanno Campi Genitore, Profondità e Peso che servono a collocare il Termine nella gerarchia della Tassonomia 
  • i Contenuti hanno un Campo Titolo (compilato dall'Utente), un Campo Pubblicato (che indica se il Contenuto è visibile o nascosto) ed i seguenti Campi predefiniti compilati automaticamente da Drupal ma modificabili dall'Amministratore: Autore (Riferimento all'Utente che ha creato il Contenuto), Creato il (Data e ora di creazione del Contenuto) e Modificato (Data e ora di ultima modifica del Contenuto)

Aggiungere Campi

L'Amministratore può aggiungere Campi ai Bundle. Ad esempio, è possibile aggiungere agli Utenti un Campo testuale per memorizzare il nome della persona e un Campo selezione per il sesso. La possibilità di aggiungere Campi è fondamentale per la costruzione delle app con Drupal, perché permette di costruire Entità adatte alle specifiche esigenze della app, senza lavorare sulle tabelle del database di Drupal. 

Le modalità di aggiunta, modifica e eliminazione di Campi differisce da Bundle a Bundle. Ad esempio, per aggiungere un Campo agli Utenti si utilizza il comando Configurazione - Impostazione profilo - Gestisci Campi. Per gli altri Bundle, spiegherò come fare nelle specifiche Guide dedicate a tipi di Contenuti, Tassonomie ecc.  

Nome interno ed nome esterno (etichetta) del Campo

Ogni Campo ha un nome esterno ed un nome interno. Il nome esterno è l'etichetta che l'Amministratore assegna al Campo e col quale il Campo viene richiesto agli Utenti. Il nome interno è quello con cui Drupal identifica il Campo ed è per default composto da field_ seguito dall'etichetta in caratteri minuscoli; ad esempio, il Campo con nome esterno "Cognome" è identificato in Drupal col nome interno field_cognome

Mentre il nome esterno può essere il medesimo per più Campi e può essere modificato in ogni momento, il nome interno non può essere più modificato una volta confermato e quindi occorre porre qualche attenzione se accettare o meno il nome automaticamente proposto da Drupal. Non ci sono regole particolari per i nomi interni, se non che non ci possono essere due Campi omonimi (anche di tipi di Entità diversi): Drupal segnala come errore una omonimia e rifiuta di salvarla. Poiché è normale avere decine di Campi in una app, suggerisco di inserire nel nome interno del Campo anche il nome del tipo di Entità cui appartiene: ad esempio, per il Campo "Stato" del tipo di Entità "Prestito" può essere risultare utile digitare come nome interno "field_stato_prestito". L'importanza dei nomi interni dei Campi sarà evidente nella costruzione delle Viste.

Campi obbligatori e multivalore

Quando si aggiunge un Campo ad un Bundle, è possibile specificare se la compilazione del Campo è obbligatoria o meno. E' anche possibile specificare quanti valori possono essere memorizzati nel Campo: uno, un numero predefinito (esempio 3) o un numero illimitato.

Tipi di Campi

Drupal mette a disposizione molto tipi di Campi, elencati quando si aggiunge un Campi ad un tipo di Entità:

Alcuni moduli aggiuntivi aggiungono ulteriori tipi di Campi, ad esempio coordinate geografiche. 

Ogni tipo di Campo ha una propria configurazione specifica. Ad esempio: il Campo di tipo Data e ora (che per semplicità chiamerò "data") può essere configurato perché accetti solo la data senza orario o per accogliere un periodo anziché una sola data; il Campo di tipo Selection List deve essere configurato specificando quali valori elencare; il Campo di tipo Caricamento File (nel seguito "File") prevede due sottotipi: Immagine e File, per ognuno dei quali sono configurabili i tipi di file caricabili.    

Formato dei Campi testuali

In particolare, per i Campi che devono contenere testo esistono due tipi: Testo semplice e Testo formattato. Nella configurazione dei Campi di tipo Testo formattato occorre specificare quale formato può accettare: un Formato è una specifica configurazione che elenca quali formattazioni (es. grassetto, sottolineato, font) sono ammesse e quali trasformazioni verranno effettuate sul testo (es. trasformazione di indirizzi internet in link cliccabili). I Formati disponibili sono elencati e modificabili in Configurazione - Formati testo e editor. 

Per ogni Formato l'Amministratore può scegliere quali Ruoli di Utente possono utilizzarlo, se attivare o meno l'editor visuale, quali comandi dell'editor visuale mettere a disposizione, quali trasformazioni attivare ecc. Per motivi di sicurezza, di solito si assegnano Formati più completi e potenti agli Utenti con maggiori privilegi nella app, assegnando agli Utenti "base" un formato meno ricco di funzionalità. 

Quando si aggiunge un Campo testuale a un Bundle, si possono specificare uno o più Formati per quel Campo: quando compila quel Campo per una Entità di quel Bundle, l'Utente potrà scegliere uno dei Formati ammessi per quel Campo e autorizzati per i suoi Ruoli. 

Riferimenti tra Entità

Tra i vari tipi di Campi, riveste una particolare importanza il tipo Riferimento (reference), perché consente di costruire una relazione tra due o più Entità. Ad esempio, nella app "Miei Libri" posso definire il tipo di Contenuto "Oggetto" ed il tipo di Contenuto "Prestito" e aggiungere a quest'ultimo un Campo di tipo Riferimento che rimanda agli Oggetti; posso rappresentare questa relazione come "Prestito → Oggetto" perché, partendo dal Prestito, posso arrivare a identificare con certezza l'Oggetto prestato; e quando compilo il Campo "Oggetto" di un Prestito, Drupal guida la compilazione elencando automaticamente gli Oggetti presenti nella app.