Когда я создаю стандартное поле выбора, используя API формы Drupal 7, первое значение (также выбранное в новой «пустой форме») <option selected="selected" value="">- Select -</option>
. Это значение не указано в определении формы, и я не изменяю форму. (Это хорошо)
Однако, когда я создаю второе поле выбора, которое зависит от первого использования #states
, у него нет такого значения по умолчанию. Для сложных форм с несколькими зависимостями это несоответствие является проблемой.
Пример определения формы следующий:
function sb_quickquote_test_form($form, &$form_state, $post=array()) {
$fields['first_select'] = array(
'#type' => 'select',
'#title' => 'First select box',
'#options' => Array('First', 'Second', 'Third'),
'#required' => TRUE,
);
$fields['dependent_delect'] = array(
'#type' => 'select',
'#title' => 'Dependent select box',
'#options' => Array('Something', 'Another thing', 'Something else', 'Final thing'),
'#states' => Array(
'visible' => Array('select[name=first_select]' => array('value' => '2')),
'required' => Array('select[name=first_select]' => array('value' => '2')),
),
);
$fields['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $fields;
}
В этом простом примере у нас есть 2 поля выбора и кнопка отправки. Два поля выбора отображаются как:
______________ ________________
| - Select - |v| | Something |v|
`--------------' `----------------'
| - Select - | | Something | <- no empty option
| First | | Another thing |
| Second | | Something else |
| Third | | Final thing |
-------------- ----------------
(Из-за #states
настройки второе поле выбора появляется только тогда, когда в первом окне выбора выбрано «Третье»)
Это несоответствие вызывает проблемы в ситуации, когда мы генерируем сложные динамические формы с взаимозависимыми полями.
Кто-нибудь имеет какие-либо идеи, почему поля получают несогласованные параметры и каков наилучший подход к решению проблемы?