Drupal 7 form API'sini kullanarak standart bir seçim kutusu oluşturduğumda, ilk değer (ayrıca yeni bir 'boş formda seçilen değer)' dir <option selected="selected" value="">- Select -</option>
. Bu değer form tanımında belirtilmemiş ve hiçbir form değişikliği yapmıyorum. (Bu iyi)
Ancak, ilk kullanıma bağlı ikinci bir seçim kutusu oluşturduğumda #states
, böyle bir varsayılan değere sahip değil. Birden fazla bağımlılığı olan karmaşık formlar için bu tutarsızlık bir sorundur.
Örnek bir form tanımı aşağıdaki gibidir:
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;
}
Bu basit örnekte, 2 seçim kutusu ve bir gönderme düğmesi var. İki seçim kutusu şu şekilde görüntülenir:
______________ ________________
| - Select - |v| | Something |v|
`--------------' `----------------'
| - Select - | | Something | <- no empty option
| First | | Another thing |
| Second | | Something else |
| Third | | Final thing |
-------------- ----------------
( #states
Ayar nedeniyle , ikinci seçim kutusu yalnızca ilk seçim kutusu "Üçüncü" seçili olduğunda görünür)
Bu tutarsızlık, birbirine bağımlı alanlarla karmaşık dinamik formlar ürettiğimiz bir durumda sorunlara neden oluyor.
Alanlara neden tutarsız seçenekler verildiği ve sorunun çözümü için en iyi yaklaşımın hangisi olduğu hakkında bir fikri olan var mı?