0

hook_menu() を実装し、page_callback を含む関数を呼び出しました。

関数 bla_form($var) 定義を使用して、そこに引数を渡すことができます。への呼び出しを返すとreturn drupal_get_form('bla_node_form', $new_node, $project_id)、 $var in を取得し$form_state['args'][1]ます。

私が合格した場合、私array(4)は得る$form_state['args'][1]

私が合格した場合、私array('project_id' => 4)は得る$form_state['args'][1]['project_id']

を手に入れたいです$form_state['args']['project_id']

例:

function form_example_menu () {
  $items['node/add/bla/project/%'] = array(
    'page callback' => '_bla_form',
    'page arguments' => array(4),//This is where I want to pass a keyed array!!!
    'access callback' => TRUE,
  );
  return $items;
}
function _bla_form ($project_id = array()) {
  module_load_include('inc', 'node', 'node.pages');
  $new_node = new stdClass;
  $new_node->type = 'bla';
  $new_node->language = LANGUAGE_NONE;
  return drupal_get_form('bla_node_form', $new_node, $project_id);
}

回避策: このようにできない場合: $form_state['args'] を読んで、適切な要素を使用して引数を取得していることを確認するにはどうすればよいですか (他の要素ではありません)。

ありがとう

4

1 に答える 1

0

「オートローダーワイルドカード」を使用できます。詳細については、hook_menu ドキュメント ページの同じ名前のセクションを参照してください: https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7

次に、パスに単純な「%」の代わりに「%project」を指定し、必要な配列を返す「project_load($project_id)」関数を作成します。その配列は、ページ コールバックの最初のパラメーターで取得する配列になります。

于 2014-10-25T07:26:28.463 に答える