当我使用Drupal 7表单API创建标准选择框时,第一个值(也是在新的“空白表单”上选择的值)为<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
设置,仅当第一个选择框选择了“第三”时,第二个选择框才会出现)
在我们生成具有相互依赖的字段的复杂动态形式的情况下,这种不一致导致了问题。
有谁知道为什么给字段提供不一致的选项以及解决该问题的最佳方法是什么?