正如問題中所述,drupal_get_form()
在頁面構建過程中調用太遲,導致drupal_add_js()
和drupal_add_js()
調用有任何影響。在主題圖層調用drupal_get_form()
通常不是問題,但在這種情況下,我假設在這種情況下它被稱爲page-<something>.tpl.php
。由於執行template_preprocess_page()
後發生CSS和JS添加,因此建立了$script
,css
和$styles
變量。
一個簡單的解決方案是從你的主題頁面模板預處理打電話drupal_get_form()
,然後重新建立$script
,css
和$styles
變量。
function THEME_preprocess_page(&$variables) {
$form = drupal_get_form('the_form_name');
$variables['my_form'] = $form;
$variables['styles'] = drupal_get_css();
$variables['css'] = drupal_add_css();
$variables['scripts'] = drupal_get_js();
}
更好的解決方案將是較早調用drupal_get_form()
,從一個較低的水平模板(如node.tpl.php
OU user.tpl.php
)。但最好的辦法是在頁面,塊等回調函數中檢索主題圖層之外的表單。
是否有任何理由你調用'drupal_get_form()'? – kiamlaluno