Drupal 6页面和表单自定义模块

时间:2013-02-20 21:03:12

标签: php drupal drupal-6

我想用表格制作一个drupal页面。类似下面的东西,不呈现:

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()来呈现页面上的表单。

1 个答案:

答案 0 :(得分: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