Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

9.10.1. API de campos de Drupal. Widget de campo: campos de entrada de datos, formulario para el campo.

04/05/2025, by Ivan

Menu

En este tutorial veremos cómo funciona el Widget de Campo (Field Widget) del módulo Link. Este es un artículo de revisión, así que si deseas comenzar a escribir tu propio Widget de Campo, puedes pasar a los siguientes artículos.

En la lección anterior agregamos campos de tipo Link para nodos y bloques. Ahora veamos cómo se forma el formulario del campo Link.

Ya nos hemos encontrado con la carga automática (autoloading) de clases PHP en Drupal, y también existe una clase base para widgets de campos llamada WidgetBase:

core/lib/Drupal/Core/Field/WidgetBase.php

Al crear una nueva clase hija en el módulo y colocarla en src/Plugin/Field/FieldWidget, la clase se conectará automáticamente y podrá usarse para el campo. Veamos la clase del widget para el campo Link:

core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php

La anotación de la clase contiene el tipo de campo al que puede aplicarse este widget:

/**
 * Implementación del plugin 'link' widget.
 *
 * @FieldWidget(
 *   id = "link_default",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

De esta manera puedes agregar nuevos widgets de campo en tu módulo personalizado para campos existentes.

Ahora pasemos al método formElement(), que probablemente sea uno de los métodos principales del widget, donde se agregan elementos al formulario mediante la Form API. Hay tres elementos en el widget Link:

  • $element['title']
  • $element['uri']
  • $element['attributes']

Estos campos luego se utilizarán para ingresar datos en un formulario de nodo o bloque. También se añade validación a los campos, porque por ejemplo, el campo URI debe contener una URL válida o una dirección local del sitio.

Otro de los métodos importantes es settingsForm(), el cual es responsable del formulario de configuración que puedes ver en la página de "Administrar formulario":

link

Todos los demás métodos en el Field Widget son opcionales. No entraremos en detalle sobre cada uno de ellos porque no se requieren necesariamente al escribir módulos personalizados. Si vas a escribir módulos contribuidos, creo que no tendrás dificultades para leer la descripción de los métodos de la clase padre:

core/lib/Drupal/Core/Field/WidgetBase.php

Todos los Field Widgets para campos se configuran en la pestaña "Administrar presentación del formulario" para cada bundle de entidad por separado:

manage form display