Propiedad #states de la API de formularios de Drupal

Drupal-form-API-teaser.jpg
Solucionex
12
Jun 23

Los #states permiten controlar y modificar dinámicamente la apariencia y comportamiento de los elementos de la interfaz de usuario, lo que brinda una experiencia más interactiva y personalizada para los usuarios.

En este artículo, exploraremos los estados en Drupal y cómo pueden mejorar la interacción del usuario en tu sitio web.

 

¿Qué son los estados en Drupal?

Los estados en Drupal son una forma de cambiar la apariencia o el comportamiento de los elementos de la interfaz de usuario en respuesta a ciertos eventos o condiciones. Estos eventos pueden ser acciones del usuario, cambios en los datos del formulario o cualquier otra condición específica que desees definir. Al utilizar los estados, puedes mostrar u ocultar elementos, habilitar o deshabilitar campos, modificar estilos y mucho más.

 

Beneficios de utilizar los estados en Drupal

  • Interacción dinámica: Los estados en Drupal permiten crear una experiencia de usuario más interactiva al mostrar u ocultar elementos en función de las acciones del usuario. Por ejemplo, puedes hacer que aparezca un campo adicional cuando se selecciona una opción específica en un formulario, lo que simplifica la interfaz y guía al usuario de manera intuitiva.
  • Personalización: Los estados en Drupal ofrecen una gran flexibilidad para adaptar la interfaz de usuario a las necesidades específicas de tu sitio web. Puedes utilizarlos para modificar estilos, cambiar etiquetas o incluso agregar nuevas funcionalidades en tiempo real.
  • Simplificación del flujo de trabajo: Al utilizar los estados, puedes simplificar el flujo de trabajo del usuario al mostrar solo los elementos necesarios en cada etapa. Esto ayuda a evitar la sobrecarga de información y reduce la posibilidad de cometer errores.

 

Estados que se pueden aplicar a un elemento de campo de formulario

  • enabled
  • disabled
  • required
  • optional
  • visible
  • invisible
  • checked
  • unchecked
  • expanded
  • collapsed

 

Los siguientes estados se pueden utilizar al comprobar los valores de otros campos

  • empty
  • filled
  • checked
  • unchecked
  • expanded
  • collapsed
  • value

 

Los siguientes estados existen tanto para elementos como para condiciones remotas

  • relevant
  • irrelevant
  • valid
  • invalid
  • touched
  • untouched
  • readwrite
  • readonly

 

Implementación y ejemplos de los #states en Drupal

Supongamos que tenemos un formulario de registro y queremos mostrar un campo de texto adicional llamado "Número de teléfono" solo cuando el usuario selecciona la opción de "Teléfono" en un "select", haríamos uso del atributo #states con la regla "visible" Se puede implementar de la siguiente manera:

$form['metodo_de_contacto'] = [
  '#type' => 'select',
  '#title' => 'Método de contacto',
  '#options' => [
    'email' => 'Correo electrónico',
    'phone' => 'Teléfono',
  ],
];
$form['numero_de_telefono']['#states'] = [
  'visible' => [
    ':input[name="metodo_de_contacto"]' => ['value' => 'phone'],
  ],
];

Si ahora quisiéramos que esa campo fuese obligatorio utilizaríamos al #states "required", el cual es un caso especial porque tiene que apuntar al campo de entrada real y no al contenedor del campo (como se ha hecho anteriormente). Veámoslo mejor con un ejemplo:

$form['numero_de_telefono']['widget']['0']['target_id']['#states'] = [
  'required' => [
    ':input[name="metodo_de_contacto"]' => ['value' => 'phone'],
  ],
];

 

Estos son solo dos ejemplos de cómo puedes implementar los #states en Drupal para personalizar la interacción del usuario en tus formularios. Con el uso adecuado de los selectores y las acciones, puedes crear una amplia variedad de comportamientos dinámicos y adaptativos en tus sitios web Drupal.

 

Fuentes

Drupal's Form API #states