2013-02-20 72 views
0

我想用一個表單創建一個drupal頁面。類似以下,它不會呈現:Drupal 6頁面和表單自定義模塊

function score_table_menu() { 

    $items['table'] = array(
    'title' => t('name'), 
    'page arguments' => array('table_page'), 
    'page arguments' => array('table_form'), 
    'description' => t('score table'), 
    'type' => MENU_CALLBACK, 

); 
    return $items; 
} 

function table_page(){ 
$output .= t('Complicated Hello'); 
$header = stuff; 
$rows = stuff; 
$output .= theme_table($header, $rows); 
return $output; 
} 

function table_form(){ 

$stuff_array = array (values); 
$form['choice']= array(
    '#type' => 'select', 
    '#title' => t('Select Stuff'), 
    '#options' => $stuff_array, 
); 


    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => 'Submit', 
); 
    return $form; 

} 

function table_form_validate(){} 

function table_form_submit(){ 
drupal_set_message(t('Submitted')); 
} 

是否有可能有一半的模塊呈現一個頁面,另一半是表單?我已經寫出了兩個頁面參數。我沒有看到頁面參數和回調之間的任何區別。也可能需要使用drupal_get_form()在頁面上呈現表單。

回答

0
page callback 

是您希望此URI觸發的函數。

page arguments 

是您希望在調用回調時發送到該函數的任何參數。

你的菜單項應該是這樣的:

$items['table'] = array(
    'title' => t('name'), 
    'page callback' => 'table_page', 
    'description' => t('score table'), 
    'type' => MENU_CALLBACK, 
); 

或者這樣:

$items['table'] = array(
    'title' => t('name'), 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('table_form'), 
    'description' => t('score table'), 
    'type' => MENU_CALLBACK, 
); 

在你table_form,您可以使用其他形式的類型來顯示標記,

$form['table'] = array(
    '#type' => 'markup', 
    '#markup' => theme_table($header, $rows), 
); 

查看API以更好地瞭解hook_menu:http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/hook_menu/6

+0

'#type'=>'markup', '#markup'=> theme_table($ header,$ rows),適用於drupal 6嗎?你的答案是否解決了如何擁有半頁和一半的表單? – ingrid 2013-02-26 04:59:02

+0

是啊,#markup =>不存在... – ingrid 2013-02-26 05:36:58

+0

好的簡單編輯,#markup實際上應該是#value在Drupal 6中 – ingrid 2013-02-26 05:39:26