Решил сделать динамическую форму в файле commerce_payment_example.module.
$form['first_cb'] =
array(
'#type' =
> 'checkbox',
'#title' =
> 'Первый',
);
$form['second_cb'] =
array(
'#type' =
> 'checkbox',
'#title' =
> 'Второй',
'#states' =
> array(
'visible' =
> array(
':input[name="first_cb"]' =
> array('checked' =
> TRUE)
),
),
);
В итоге, если "Первый" checkbox отметить, то должен появиться "Второй", а у меня они оба видны, независимо отмечен "Первый" checkbox или нет.
Подскажите, в чем причина?
Комментарии
:input[name="first_cb"]
Пробовал, не помогает.
(Заодно исправлю это в первом сообщении...)
Описано все верно. Проверьте, что name у чекбокса на выходе действительно first_cb, возможно, что в вашем контексте name формируется вместе с parents
Полтергейст однако. Кстати, двоеточие в ядре не употребляется как оказалось, хотя в примере с двоеточием.
А вообще если не работает - гляньте рабочий код, например в modules/user/user.admin.inc. И в каком контексте формируете эти элементы формы? Если drupal_get_form() проигнорировать, то #states вполне могут пролететь как фанера над Парижем. Не удивлюсь, что может не работать из-за кириллицы в #title, если файл скрипта не в UTF8.
Попробуйте прогнать через js debugger какой-нить и посмотреть, какие параметры state приходят на страницу. У меня раз было так, что #id не формировался у элемента (а он нужен для states).
Можете просто поставить #id руками
<?php
$form['second_cb'] = array(
'#type' => 'checkbox',
'#id' => 'second_cb',
'#title' => 'Второй',
'#states' => array(
'visible' => array(
':input[name="first_cb"]' => array('checked' => TRUE)
),
),
);?>
kosilko, rimen - Большое спасибо ребята! С меня помощь по дизайну, если что обращайтесь в личку
Дело было, как оказалось, пустяковое - там присваивались имена родителей:
$form['second_cb'] = array(
'#type' => 'checkbox',
'#title' => 'Второй',
'#states' => array(
'visible' => array(
':input[name="parent[parent][first_cb]"]' => array('checked' => TRUE)
),
),
);?>