0

我想用表格制作一个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() 在页面上呈现表单。

4

1 回答 1

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

于 2013-02-20T21:48:20.007 回答