gpt4 book ai didi

php - Drupal AJAX 不改变下拉列表

转载 作者:搜寻专家 更新时间:2023-10-31 21:56:01 25 4
gpt4 key购买 nike

我正在使用 Drupal 7 的 Form API 处理带有依赖下拉列表的代码。ajax 请求看起来正常(返回状态 200)并且我知道我的选项方法正在返回正确的数组,但它仍然没有更改列表...这是我的代码

$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 中,它没有找到 $form['campus'] 或 $form['infocollect']['campus'] 导致 ajax 无法工作,有没有如何解决这个问题?

最佳答案

您需要在回调中使用 drupal_get_form。所以这个:

函数 deposit_campus_dropdown_callback($form, $form_state) {
返回 $form['校园'];
}

应该是这样的:

函数 deposit_campus_dropdown_callback($form, $form_state) {
返回 drupal_get_form('校园');
}

关于php - Drupal AJAX 不改变下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com