Drupal - опция #states visible не работает с типом даты - PullRequest
1 голос
/ 21 июня 2011

Я пытаюсь создать форму фильтрации для модуля Drupal, которая показывает часы. Я пытаюсь получить поле даты, чтобы показать, только если пользователь хочет фильтровать по нему. У меня есть текстовое поле ниже в коде, который скрывается. Я не уверен, что я должен делать. Вот мой код для поля:

$form['filters']['start-do'] = array(
    '#type' => 'checkbox',
    '#title' => t('Filter by start date'),
);

$form['filters']['start'] = array(
    '#type' => 'date',
    '#title' => t('Start Date'),
    '#description' => t('Show hours that started after this date.'),
    '#states' => array(
        'invisible' => array(
            ':input[name="start-do"]' => array('checked' => FALSE) 
        )    
    )
);

1 Ответ

2 голосов
/ 21 июня 2011

Вы забыли про элемент формы типа "контейнер" в вашем примере.

Попробуйте что-то вроде этого:

$form['filters']['start-do'] = array(
  '#type' => 'checkbox',
  '#title' => t('Filter by start date'),
);
$form['filters']['container'] = array(
  '#type' => 'container',
  '#states' => array(
    'invisible' => array(
      'input[name="start-do"]' => array('checked' => FALSE)
    )
  )
);
$form['filters']['container']['start'] = array(
  '#type' => 'date',
  '#title' => t('Start Date'),
  '#description' => t('Show hours that started after this date.'),
);

Всегда стоит проверить справочник API форм: http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html/7#states

...