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'));
}

モジュールの半分でページをレンダリングし、残りの半分でフォームをレンダリングすることは可能ですか? 2 つのページ引数を書き出しました。ページ引数とコールバックの違いはわかりません。また、ページにフォームをレンダリングするために 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),
);

hook_menuの理解を深めるためにAPIを見てください:http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/hook_menu/6

于 2013-02-20T21:48:20.007 に答える