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

发布于 2024-08-06 15:54:23 字数 311 浏览 5 评论 0原文

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

我知道特定的通配符,例如

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

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

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

我想要一个 display/* _menu() 路径来处理所有参数。

我该怎么办?

is it possible to handle all wildcards in _menu() by module.

I know about specific wildcards like

display/page/%
but that won't work for paths display/page/3/andOrderBy/Name

what If I want to handle unpredicted ammount of parameters like

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

I want to have one display/* _menu() path to handle all ARGUMENTS.

how can I do it ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱情眠于流年 2024-08-13 15:54:23

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

所以如果你只注册了一个通配符display/page/%,但实际请求有两个额外的元素display/page/3/andOrderBy/Name,你的回调就会被传递'3' 作为显式参数,但也将 'andOrderBy' 和 'Name' 作为隐式附加参数。

回调示例:

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 ...
}

Drupal will pass any additional URL elements as additional parameters to your hook_menu callback function - use func_get_args() in your callback to get them.

So if you register only one wildcard display/page/%, but the actual request has two additional elements display/page/3/andOrderBy/Name, your callback will be passed '3' as an explicit parameter, but also 'andOrderBy' and 'Name' as implicit additional ones.

Example callback:

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 ...
}
肩上的翅膀 2024-08-13 15:54:23

啊;)
你就在

这里,我就是这样解决的。

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

ah ;)
you were right

here is how i solved it.

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);
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文