Нормальный случай будет иметь #ajax прикрепленное к общему входу, как флажок, текстовое поле и т.д.
поведение является то, что, когда пользователь изменит значение входного сигнала, он будет стрелять ваш обратный вызов через AJAX и отправьте всю форму поверх, а затем вы можете обработать эту форму за сценой и отрегулировать определенные вещи перед отправкой формы назад и изменить элемент на указанную оболочку.
Один из вопросов, который у меня был для частичной визуализации формы, - это когда мне нужно выполнить какой-либо вызов ajax или ввести частичный элемент формы в определенную область страницы, сохраняя целостность рендеринга формы. (Я не знаю точно, что форма сборка сделала, я думаю, я не хочу знать)
Поскольку форма рендеринг использует визуализируемый массив, если вы просто хотите, чтобы извлечь определенный элемент, вы можете просто сделать
$form = drupal_get_form('application_form');
$body = render($form['body']);
Ниже приведен реальный пример того, что я принял форму и разделил ее на заголовок, нижний колонтитул и остальные элементы формы.
// get a form for updating application info.
$form = drupal_get_form('pgh_awards_review_application_form', $app);
$elements = array();
$form_render = render($form);
$elements = array(
'qualify' => render($form['qualify']),
'threshold_met' => render($form['threshold_met']),
'submit' => render($form['submit']),
);
if (preg_match('/<form.+div>/', $form_render, $matches)) {
$elements['header'] = $matches[0];
}
if (preg_match('/<input type="hidden".+form>/s', $form_render, $matches)) {
$elements['footer'] = $matches[0];
}
$vars['form'] = $elements;
Это определенно не очень подходит, он просто служит потребностям на данный момент.
Не могли бы вы добавить свое полное определение формы и реализацию 'fmg_addbanner_ajax_callback', таким образом мы сможем помочь вам ... –