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