logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

9.10.2. Drupal Fields API. Field Formatter: visualizzare i dati dei campi sulla pagina

17/10/2025, by Ivan

Menu

In questo articolo esamineremo i Field Formatter, che ci permettono di modificare la visualizzazione dei campi e di visualizzarli sulla pagina.

Negli articoli precedenti, abbiamo creato il tipo di campo Link, in questo articolo vedremo come questi campi vengono visualizzati sulla pagina e quale classe è responsabile di questo. Ogni campo che aggiungi tramite Drupal può essere visualizzato sulla pagina e ne puoi modificare le impostazioni nella pagina Gestisci visualizzazione.

manage display

Nella colonna Formato puoi scegliere come visualizzare il campo. Questa colonna è formata dalle classi Field Formatter. Vediamo la classe del modulo Link, che visualizza il link sulla pagina:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php

L'annotazione della classe mostra a quale tipo di campo appartiene questo formatter.

/**
 * Implementazione del plugin per il formatter 'link'.
 *
 * @FieldFormatter(
 *   id = "link",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

In questo file, ciò che ci interessa principalmente è il metodo viewElements(), che è responsabile della visualizzazione dei dati sulla pagina. Nota che il formatter non invia richieste al database, prende i dati dalla variabile $items. I dati renderizzati dall'entità vengono passati a $items. In questo modo, abbiamo una separazione delle responsabilità delle classi per l'inserimento dei dati Field Widget, la memorizzazione dei dati Field Storage e l'output dei dati Field Formatter. Questo è molto comodo perché puoi memorizzare nella cache i dati a livelli differenti. Ad esempio, se l'output o le impostazioni del Field Formatter sono cambiate, non ha senso svuotare la cache dei nodi, perché i dati non cambiano, ma cambia solo il loro output. È anche comodo per la discussione e l'aggiunta di nuove funzionalità. Se devi solo cambiare l'output, aggiungi un nuovo Field Formatter per il tipo di campo e scrivi il tuo output.

Inoltre, la classe LinkFormatter ha il metodo settingsForm(), che è responsabile della configurazione del formatter nella pagina Gestisci visualizzazione. Tramite la Form API puoi aggiungere i campi di configurazione per il campo e poi memorizzare queste impostazioni nella configurazione.

Il modulo Link ha un altro formatter:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php

Questo è ereditato dal normale LinkFormatter, ma con una differenza: per questo formatter viene collegato un template separato:

core/modules/link/templates/link-formatter-link-separate.html.twig

In questo modo, l'HTML per visualizzare il campo viene ottenuto passando attraverso il template. E il formatter forma solo un file $element, dove attraverso $delta vengono scritti i dati per ciascuno dei valori del campo multiplo.

Come puoi vedere, la Field API è abbastanza semplice e comoda da usare; nel prossimo articolo scriveremo il nostro tipo di campo con Storage, Widget e Formatter.