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 回答