Comment afficher des champs si une checkbox est coché ?

Il peut être intéressant d'afficher des champs supplémentaires si une checkbox est coché dans un formulaire.

Pour ce faire nous allons créer un type checkbox, un type container et en exemple un type url ainsi qu'un textfield :

  $form['icones']['check'] = array(
    '#title' => t("Check"),
    '#type' => 'checkbox',
    '#weight' => 3,
    '#ajax' => array(
      'callback' => 'ajaxcheck',
      'wrapper' => 'ajaxcheck_div',
    ),
  );
 
  $form['icones']['containter'] = array(
    '#type' => 'container',
    '#states' => array(
      "visible" => array(
        "input[name='check']" => array(
          "checked" => TRUE,
        ),
      ),
    ),
  );
 
  $form['icones']['containter']['url'] = array(
    '#type' => 'url',
    '#title' => t("Lien"),
    '#weight' => 1,
    '#default_value' => theme_get_setting('lien'),
    '#required' => ($form_state->getValue('check') !== NULL ? ($form_state->getValue('check') == TRUE ? TRUE : FALSE) : FALSE),
    '#prefix' => '<div id="ajaxcheck_div">',
  );
  $form['icones']['containter']['titre'] = array(
    '#type' => 'textfield',
    '#title' => t("Titre"),
    '#weight' => 2,
    '#default_value' => theme_get_setting('titre'),
    '#required' => ($form_state->getValue('check') !== NULL ? ($form_state->getValue('check') == TRUE ? TRUE : FALSE) : FALSE),
    '#suffix' => '</div>',
  );

Cette exemple est pour Drupal 8.

Pour Drupal 7, il suffit de remplacer $form_state->getValue('check') par $form_state["values"]["check"]

Voici le résultat quand la checkbox n'est pas coché :

2017-12-20-164102.png

Une fois coché :

2017-12-20-164117.png

 

Drupal

Ajouter un commentaire

Image CAPTCHA
Enter the characters shown in the image.