【发布时间】:2016-02-15 06:59:52
【问题描述】:
我正在使用 Drupal 7 的 Form API 处理带有依赖下拉列表的代码。ajax 请求看起来像它的工作(返回状态 200),我知道我的 options 方法正在返回正确的数组,但它仍然不是更改列表...这是我的代码
$m1 = drupal_map_assoc(
array(
7,
)
);
$selected;
if(isset($form_state['values']['program'])){
$m2 = drupal_map_assoc(
array(
(int)$form_state['values']['program'],
)
);
$selected = key($m2);
}else{
$selected = key($m1);
}
$form['infocollect']['program'] = array(
'#type' => 'select',
'#title' => t('Program'),
'#required' => TRUE,
'#options' => array(
0 => t('Option 1'),
1 => t('Option 2'),
2 => t('Option 3'),
3 => t('Option 4'),
4 => t('Option 5'),
5 => t('Option 6'),
6 => t('Option 7'),
),
'#ajax' => array(
'callback' => 'deposit_campus_dropdown_callback',
'wrapper' => 'dropdown-campus-replace',
'method' =>'replaceWith',
),
'#prefix' => '<tr><td>',
'#suffix' => '</td></tr>',
);
$form['infocollect']['campus'] = array(
'#type' => 'select',
'#title' => t('Campus'),
'#required' => TRUE,
'#prefix' => '<tr><td><div id="dropdown-campus-replace">',
'#suffix' => '</div></td></tr></table><br />',
'#options' => _deposit_get_campus_options($selected),
);
......
function deposit_campus_dropdown_callback($form, $form_state) {
return $form['campus'];
}
function _deposit_get_campus_options($key='') {
dpm($key);
$options = array(
0 => drupal_map_assoc(
array(
t('Option 1'),
)
),
1 => drupal_map_assoc(
array(
t('Option 1'),
)
),
6 => drupal_map_assoc(
array(
t('Option 1'),
)
),
4 => drupal_map_assoc(
array(
t('Option 1'),
t('Option 2'),
t('Option 3'),
t('Option 4'),
)
),
5 => drupal_map_assoc(
array(
t('Option 1'),
t('Option 2'),
t('Option 3'),
t('Option 4'),
)
),
3 => drupal_map_assoc(
array(
t('Option 1'),
t('Option 2'),
t('Option 3'),
)
),
2 => drupal_map_assoc(
array(
t('Option 1'),
t('Option 2'),
t('Option 3'),
)
),
7 => drupal_map_assoc(
array(
t('none'),
)
),
);
if (isset($options[$key])) {
dpm($options[$key]);
return $options[$key];
}
else {
return array();
}
}
更新: 我发现问题出在回调函数 deposit_campus_dropdown_callback 中,它没有找到导致 ajax 无法工作的 $form['campus'] 或 $form['infocollect']['campus'] ,有没有解决这个问题的方法?
【问题讨论】:
标签: php ajax forms drupal drupal-7