我使用表单API和ajax调用在Drupal 7中构建了一个表单。典型的表单项如下所示:
$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调用只是重建表单的一小部分,也需要几秒钟(笨蛋正在加班:)。
这是正常的吗?
有没有办法加速这个(保持Drupal的方式)?
答案 0 :(得分:0)
当进行ajax调用时,它会逐字地重建整个表单并仅返回它的一个方面。例如,在函数 ajax_step1 中,您可能正在调用从表单中返回某个元素,并将其显示在 step1-wrapper div / wrapper元素中。
如果要加快表单返回,则需要优化表单构建器本身。这意味着,您可能需要重写表单。