Cómo hacer campos dependientes en un formulario de drupal7: los superpoderes de #states

Cómo hacer campos dependientes en un formulario de drupal7: los superpoderes de #states

Seguro que más de una vez has querido hacer algo tan simple como, en un formulario, mostrar un campo dependiendo del valor de otro. Y quien dice mostrarlo dice deshabilitarlo, hacerlo requerido, etc.

Una forma de hacerlo es, efectivamente, con jquery, pero aquí quiero mostrar cómo hacerlo en drupal 7 con "#states".

El formato es el siguiente:

$form['campo_dependiente']['#states'] = array(
    'visible' => array(
      ':input[name="campo_del_que_depende"]' => array('value' => 'valor'),
    ),
  );

Donde "visible" es el comportamiento que queremos que tenga el campo dependiente. Este comportamiento puede ser:

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

Si queremos un comportamiento en el campo dependiente para más de una condición, tenemos la siguiente estructura:

$form['campo_dependiente']['#states'] = array(
    'visible' => array(
      array(
        array(':input[name="campo_del_que_depende"]' => array('value' => 'valor1')),
        array(':input[name="campo_del_que_depende"]' => array('value' => 'valor2')),
      ),
    ),
  );

Si necesitamos aplicar al campo dependiente más de un comportamiento condicional, por ejemplo, hacer visible y requerido un campo dependiendo del valor de otro, la estructura sería:

$form['campo_dependiente']['#states'] = array(
    'visible' => array(
      ':input[name="campo_del_que_depende"]' => array('value' => 'valor'),
    ),
    'required' => array(
      ':input[name="campo_del_que_depende"]' => array('value' => 'valor'),
    ),
  );

Como ves, este sistema da bastante juego, y lo tienes todo en el código de tu módulo, sin necesidad de poner esta lógica en un fichero jquery.

Aquí te dejo el enlace de la api de drupal donde puedes ampliar información.

Espero que esta información te haya sido útil! :-)

Si quieres aprender más sobre Drupal, y en español, te recomiendo la formación con Forcontu.

Soy referenciante, y te ofrezco 2 cupones de descuento:

  • 10% en el curso con el cupón TACANDECUR
  • 5% en los libros con el cupón TACANDELIB

Elije tu opción de formación (curso o libros) y usa tu cupón de descuento.

Experto en Drupal 7 con Forcontu Pack de libros Drupal 7

Compartir: 
Come up