2010-05-24 48 views
0

DRUPAL 6.X
我有我的自定義模塊,這是通過ajax請求調用自定義窗體構造函數。我試圖以模板文件駐留在我的主題目錄中爲主題。對於這個問題,我已經在我的主題文件夾中的template.php文件中註冊了我的主題。下面是這個文件的樣子 -我如何主題自定義窗體(drupal 6.x)

function my_theme() { 
return array(
    'searchdb' => array(
    'arguments' => array('form' => NULL), 
    'template' => 'searchform', 
    ) 
);  

}

而下面的模塊代碼摘錄 -

function test_menu() { 
$my_form['searchdb'] = array(
    'title' => 'Search db', 
    'page callback' => 'get_form', 
    'page arguments' => array(0), 
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK, 
    ); 

return $my_form; 

}

function get_form($formtype){ 
switch($formtype){ 
    case 'searchdb' : 
     echo drupal_get_form('searchdb'); 
     break; 
} 

}

function searchdb(){ 
$form['customer_name'] = array(
    '#type' => 'textfield', 
    '#title' => t('Customer Name'), 
    '#size' => 50, 
    '#attributes' => array('class' => 'name-textbox'), 
); 
return $form; 

}

你可以想象,這根本不起作用。只是爲了測試我的主題是否已經註冊,我也測試了主題功能,但沒有調用它。我已經檢查過模板文件名和form-id(通過輸出的html源代碼),一切似乎都沒問題。如果有人能指出我正確的方向,我會很高興。

+0

您可以使用'drupal_get_form'作爲頁面回調值和'array('searchdb')'作爲頁面參數值來擺脫get_form函數。 – gapple 2010-05-26 03:48:52

+0

我已經嘗試過,但drupal只是不會識別template.php中的我的主題註冊表。我有點失落,爲了讓drupal識別我的表單主題,該怎麼做。 – Andrew 2010-05-27 00:04:22

回答

0

我遇到了與我的表單相同的問題。它與在主題化過程中調用的PHP版本和php函數有關,以從主題函數中獲取輸出:call_user_func_array。

在php 5.2及以下版本中,它接受Drupal通過的結構化$ form數組。但是,在php 5.3中它會死亡。

我解決了我的問題,回滾我的PHP版本到5.2.14。

這個解決方案適用於Drupal 6.我沒有在Drupal 7中測試過,因爲D7聲稱是php 5.3兼容。