_menu()中的Drupal 6绝对通配符,是否可能?

时间:2009-10-02 10:29:05

标签: drupal drupal-routes

是否可以通过模块处理_menu()中的所有通配符。

我知道像

这样的特定通配符

display/page/% 但这不适用于路径display/page/3/andOrderBy/Name

如果我想处理不可预知的大量参数,例如

display/page/3/12/45_2/candy/yellow/bmw/turbo

我希望有一个display/* _menu()路径来处理所有ARGUMENTS。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

Drupal会将任何其他网址元素作为附加参数传递给您的hook_menu回调函数 - 在回调中使用func_get_args()来获取它们。

因此,如果您只注册一个通配符display/page/%,但实际请求有两个额外的元素display/page/3/andOrderBy/Name,您的回调将作为显式参数传递'3',而且'andOrderBy'和'将'命名为隐含的附加名称。

示例回调:

function yourModuleName_display_callback($page_number) {
  // Grab additional arguments
  $additional_args = func_get_args();
  // Remove first one, as we already got it explicitely as $page_number
  array_shift($additional_args);
  // Check for additional args
  if (!empty($additional_args)) {
    // Do something with the other arguments ...
  }
  // other stuff ...
}

答案 1 :(得分:0)

啊;) 你是对的

这是我如何解决它。

function mysearch_menu() {
$items['mysearch/%'] = array(
'page callback' => 'FN_search',
'access callback' => TRUE,
);
return $items;
}


function FN_search()
{
    return print_r(func_get_args(),true);
};