Dependent Fields

Proporciona un mecanismo para crear campos de referencia a entidades dependientes donde las opciones del campo hijo se filtran dinámicamente basándose en la selección de un campo padre utilizando Views.

dependent_fields
1,275 sites
23
drupal.org

Instalar

Drupal 11, 10, 9, 8 v1.0.5
composer require 'drupal/dependent_fields:^1.0'

Overview

El módulo Dependent Fields permite a los constructores de sitios crear campos de referencia a entidades en cascada donde las opciones disponibles en un campo hijo se actualizan dinámicamente basándose en el valor seleccionado en un campo padre. Esto crea relaciones condicionales entre campos que mejoran la usabilidad de los formularios y la integridad de los datos.

El módulo proporciona un plugin de selección de Entity Reference personalizado que utiliza Views con displays de Entity Reference para filtrar las opciones disponibles. Cuando un usuario selecciona un valor en el campo padre, una solicitud AJAX recupera las opciones filtradas para el campo hijo dependiente sin recargar toda la página.

Esto es particularmente útil para escenarios como seleccionar primero un país y luego mostrar solo las ciudades de ese país, o seleccionar una categoría y mostrar las subcategorías relacionadas. El módulo soporta campos con múltiples valores, Paragraphs, y puede referenciar campos padre por UUID para portabilidad de configuración entre sitios.

Features

  • Crea campos de referencia a entidades en cascada/dependientes donde las opciones del campo hijo se filtran basándose en la selección del campo padre
  • Utiliza Views con display de Entity Reference para definir conjuntos de opciones filtrables con potentes capacidades de consulta
  • Actualización de opciones de campo basada en AJAX en tiempo real sin recargar la página cuando cambia el campo padre
  • Soporta múltiples valores en el campo padre (permite múltiples valores en el filtro contextual)
  • Funciona con widgets de lista de selección, casillas de verificación y botones de radio
  • Soporte para campos dependientes con múltiples valores (cardinalidad ilimitada)
  • Soporte completo para Paragraphs - los campos dependientes funcionan correctamente dentro de estructuras de párrafos anidados
  • Referencia de campo padre basada en UUID para portabilidad de configuración entre entornos
  • Soporta el widget Tagify para campos de autocompletado de entidades
  • Preserva el estado de selección actual cuando se actualizan las opciones del campo dependiente
  • Despacho automático de eventos de cambio cuando se actualizan las opciones para activar actualizaciones de campos dependientes subsiguientes

Use Cases

Selección de País y Ciudad

Crea una configuración de dos campos donde los usuarios primero seleccionan un país de un vocabulario de taxonomía, y luego el campo de ciudad se filtra automáticamente para mostrar solo las ciudades asociadas con ese país. Configura una View que liste términos de ciudades con un filtro contextual en el campo de referencia al país padre.

Categoría y Subcategoría de Producto

Implementa una categorización jerárquica de productos donde seleccionar una categoría principal filtra las opciones de subcategoría. Usa una View con relaciones de términos de taxonomía para filtrar términos hijos basándose en la selección del padre.

Selección de Departamento y Empleado

Permite a los usuarios seleccionar primero un departamento, luego muestra solo los empleados que pertenecen a ese departamento. Crea una View de entidades de usuario filtrada por un campo de referencia a departamento, usando la selección del departamento como filtro contextual.

Campos Dependientes Multinivel

Encadena múltiples campos dependientes juntos. Por ejemplo: Región → País → Ciudad. La selección de cada campo filtra las opciones del siguiente campo. El módulo despacha eventos de cambio después de las actualizaciones, activando actualizaciones de campos dependientes subsiguientes.

Paragraphs con Campos Dependientes

Usa campos dependientes dentro de tipos de Paragraph para estructuras de contenido complejas. El módulo maneja correctamente los contextos de párrafos anidados y puede encontrar valores de campos padre dentro del mismo párrafo o párrafo padre.

Sincronización de Configuración Entre Entornos

Al desplegar configuración entre entornos de desarrollo, staging y producción, habilita la opción 'Reference parent by UUID' para asegurar que el filtro contextual de la View reciba UUIDs de entidades en lugar de IDs, que pueden diferir entre entornos.

Tips

  • Siempre prueba tu View independientemente antes de configurarla como fuente de campo dependiente - asegúrate de que devuelva resultados correctos con los valores de filtro contextual esperados
  • Para campos padre con múltiples valores, habilita 'Allow multiple values' en la configuración del filtro contextual de la View para que pueda aceptar IDs separados por comas
  • El valor del campo padre siempre se pasa como el primer argumento a la View, seguido de cualquier argumento adicional especificado en la configuración
  • Usa el campo 'arguments' para pasar filtros contextuales estáticos adicionales a la View más allá del valor del campo padre
  • Para mejor rendimiento con grandes conjuntos de opciones, considera añadir caché apropiado a tus Views

Technical Details

Hooks 1
hook_field_widget_single_element_form_alter

Altera los widgets de campos de referencia a entidad para añadir comportamiento AJAX a los campos padre. Cuando un campo es identificado como padre de uno o más campos dependientes, este hook añade manejadores AJAX que activan actualizaciones en los campos hijos cuando cambia el valor del padre.

Troubleshooting 5
Las opciones del campo dependiente no se actualizan cuando cambia el campo padre

Asegúrate de que el campo dependiente esté usando el widget 'Select list' o 'Check boxes/radio buttons' en Manage Form Display. Los widgets de autocompletado no están soportados para campos dependientes.

La View no aparece en la configuración del método de referencia

Asegúrate de que la View tenga un tipo de display Entity Reference. Solo las Views con displays de Entity Reference son elegibles para usar con campos dependientes.

No aparecen opciones en el campo dependiente

Verifica que el filtro contextual de la View esté configurado correctamente para aceptar el valor del campo padre. Comprueba que la View devuelva resultados cuando se prueba manualmente con los valores de argumento esperados.

Los campos dependientes no funcionan en Paragraphs

El módulo soporta Paragraphs, pero asegúrate de que tanto los campos padre como hijo estén dentro del mismo párrafo o que el campo padre sea accesible desde el contexto del párrafo.

La importación de configuración falla entre entornos

Habilita la opción 'Reference parent by UUID instead of entity ID' en la configuración del campo para asegurar la portabilidad de configuración cuando los IDs de entidades difieren entre entornos.