Проблема, когда я заполняю данные в selectbox через ajax в Drupal - PullRequest
0 голосов
/ 28 июля 2011

Я установил drupal 6, добавил несколько полей cck в один тип контента.Добавлены два поля выбора.Я беру выбранное значение родительского поля выбора и в соответствии с этой передачей выбора связывает параметры со следующим полем поля выбора с помощью Ajax.(Например, Страна -> Государство. Когда пользователь выбирает страну, я хочу передать значения состояния в следующее поле выбора.)

Но когда я отправляю форму, она выдает следующую ошибку: «Обнаружен неправильный выбор.Пожалуйста, свяжитесь с администратором сайта. "

Я не знаю, почему он не принимает значения ajaxified select box при сохранении узла.Есть ли у кого-нибудь решение по этому вопросу.Есть ли какое-либо решение для обработки этой опции динамического выбора в Drupal.

Заранее спасибо.

1 Ответ

1 голос
/ 16 сентября 2011

То же самое я работаю над drupal 7 и его работой для меня.Ниже приведен код.Надеюсь, это поможет вам.То, что я сделал, это при выборе модели автомобиля, изменится вариант автомобиля, и данные сохранятся в таблице.

функция add_offer_form ($ form, $ formstate) {

$ form ['add_offer_new_car_model'] = array (

    '#type' => 'select',
    '#required' => TRUE,
    '#options' => $car_model,
    '#ajax' => array(
        'effect' => 'fade',
        'progress' => array('type' => 'none'),
        'callback' => 'variant_callback',
        'wrapper' => 'replace_variant',
    ),
);

// Поле со списком для выбора нового варианта автомобиля

$form['add_offer_new_car_variant'] = array(

    '#type' => 'select',
    '#options' => array(),
    // The prefix/suffix provide the div that we're replacing, named by #ajax['wrapper'] above.
    '#prefix' => '<div id="replace_variant">',
    '#suffix' => '</div>',
);

// AJAX-запрос вызывает функцию построителя форм для каждого изменения.

// Мы можем изменить способ построения формы на основе $ form_state.

if (!empty($formstate['values']['add_offer_new_car_model'])) {

    $model_id = $formstate['values']['add_offer_new_car_model'];
    $rows = array();
    $result = db_query("SELECT id, variant_name from {va_car_variant} where car_model_id in ($model_id,1) order by variant_name");
    while ($data = $result->fetchObject()) {
        $id = $data->id;
        $rows[$id] = $data->variant_name;
    }
    $form['add_offer_new_car_variant']['#options'] = $rows;
}

}

////////////////////////////////////////////////////////// // /////// ФУНКЦИЯ ДЛЯ AJAXCALL BACK

функция option_callback ($ form, & $ form_state) {

return $form['add_offer_new_car_variant'];

}

...