Я работаю над кодом с зависимым выпадающим списком, используя API-интерфейс формы для Drupal 7. Запрос ajax выглядит как его работа (возвращающий статус 200), и я знаю, что метод моих параметров возвращает правильный массив, но он по-прежнему не меняется список ... это мой кодDrupal AJAX не меняет ниспадающий список
$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();
}
}
UPDATE: я понял, что проблема заключается в функции обратного вызова function deposit_campus_dropdown_callback, он не находит $ form ['cam pus '] или $ form [' infocollect '] [' campus '], который заставляет ajax не работать, есть ли способ получить это исправление?
Хорошо, я попробовал добавить это, но, похоже, это сбой php, поскольку опция кампуса исчезает, я нашел другое решение, хотя я опубликовал – atg963