Я новичок в Drupal, в моем проекте у меня есть 2 множественных выпадающих списка. Я не знаю, как сделать зависимое раскрывающееся действие множественного выбора в функции изменения формы drupal, используя ajax.
Единый выбор зависит от выпадающего списка работает. Но когда я попробовал то же самое в случае 2-х зависимых выпадающих меню, я не смог найти никакого решения. При множественном выборе ошибка «Обнаружен неправильный выбор. Пожалуйста, свяжитесь с администратором сайта.» Показано.
Пожалуйста, помогите мне, как использовать 2 множественных выбора зависимых выпадающих в Drupal.
Вот мой код: здесь «field_department» — это первый выпадающий список. «field_policy_categories» — это второе выпадающее меню мути. я хочу, чтобы 2-ые выпадающие значения соответствовали многопользовательским опциям 1-го поля.
if ($form_id == 'policy_node_form') {
$category = array();
$category[''] = '- None -';
$form['field_department']['und']['#ajax'] = array(
'wrapper' => 'policy_category_list',
'callback' => 'ajax_policy_category_callback',
'method' => 'replace',
);
$form['field_policy_categories']['#validated'] = TRUE;
$form['field_file_upload']['#validated'] = TRUE;
if (isset($form_state['values']['field_department'])) {
$array_departments = array($form_state['values']['field_department']['und']['0']['tid']);
$query = db_select('field_data_field_department', 'f');
$query->join('taxonomy_term_data', 't', 'f.entity_id = t.tid');
$query->join('taxonomy_term_hierarchy', 'h', 't.tid = h.tid');
$query->condition('f.entity_type', 'taxonomy_term', '=');
$query->condition('f.bundle', 'policy_categories', '=');
$query->condition('f.field_department_tid', $array_departments, 'IN');
$query->condition('h.parent', 0, '=');
$query->fields('f');
$query->fields('t');
$query->fields('h');
$result = $query->execute();
$policy_vid = taxonomy_vocabulary_machine_name_load('policy_categories')->vid;
$category[''] = '- None -';
foreach ($result as $record) {
$parent_arr = taxonomy_get_parents_all($record->tid);
$parent_level = sizeof($parent_arr);
$parent_level--;
$parent_tid = $parent_arr[$parent_level]->tid;
$parent_name = $parent_arr[$parent_level]->name;
$category[$parent_tid] = $parent_name;
$policy_children_arr = taxonomy_get_tree($policy_vid, $parent_tid);
foreach ($policy_children_arr as $key => $policy_children) {
$depth = '';
for ($i = $policy_children->depth; $i >= 0; $i--)
$depth .= '--';
$category[$policy_children->tid] = $depth . $policy_children->name;
}
}
$form['field_policy_categories']['und']['#options'] = $category;
} else {
$form['field_policy_categories']['und']['#options'] = $category;
}
$form['field_policy_categories']['#prefix'] = '<div id="policy_category_list">';
$form['field_policy_categories']['#suffix'] = '</div>';
$form['#validate'][] = 'form_validate_policy_add';
}
function ajax_policy_category_callback($form, &$form_state) {
return $form['field_policy_categories'];
}
Задача ещё не решена.
Других решений пока нет …