2013-05-28 2 views
0

Я создал форму в Drupal 7, используя API формы и вызовы ajax. Типичный элемент формы выглядит следующим образом:Есть ли способ ускорить вызов ajax в форматах Drupal

$form['wrapper']['step1']['currency'] = array(
    '#type' => 'radios', 
    '#options' => array(
    'USD' => t('USD'), 
    'GBP' => t('GBP'), 
    'EUR' => t('EUR'), 
), 
    '#default_value' => (!empty($form_state['values']['currency'])) ? $form_state['values']['currency'] : 'USD', 
    '#title' => t('Choose Currency'), 
    '#required' => TRUE, 
    '#ajax' => array(
    'callback' => 'ajax_step1', 
    'wrapper' => 'step1-wrapper', 
    'method' => 'replace', 
    'effect' => 'fade', 
    'speed' => 'fast', 
), 
); 

Все работает, как следует, но даже если вызов Ajax просто перестраивает небольшую часть формы она занимает несколько секунд (Throbber работает сверхурочно :).

Это нормально?

Есть ли способ ускорить это (сохраняя способ Drupal)?

ответ

0

Когда выполняется вызов ajax, он буквально перестраивает всю форму и возвращает только ее аспект. Например, в вашей функции ajax_step1 вы, вероятно, звоните, чтобы вернуть определенный элемент из формы и отобразить его в файле step1-wrapper div/wrapper.

Если вы хотите ускорить возврат формы, вам нужно оптимизировать сам построитель форм. Это означает, что вам может потребоваться переписать форму.

+0

Итак, в основном, что вы говорите, так это то, что требуется, чтобы Drupal отображал всю форму, а не только заменяемую деталь? – user1165759

+0

Yup, сначала нужно отобразить все. – inertialmedia

Смежные вопросы