0

是否可以在菜单中使用这样的通配符?

$items['foo/bar-%xxx']
...
'page arguments' => array(1),

这样我就可以争论吧?

4

2 回答 2

2

不要让这个令人反感的回复,但不要做 danielson317 建议的事情。原因是,通过这种方式,您将拥有几个不必要的菜单路由器项目,这些项目会破坏您的站点性能。其次,这不是我们通常的做法。

您可以通过将主回调注册到您的函数来做到这一点。

$items['foo/%']
...
'page arguments' => array(1),

在您的回调函数中,您可以检查给定的参数是否有效。

function MYMODULE_foo_bar($value){
if (substr($value, 0, 4) != 'bar-'){
drupal_not_found();
return; // not necessary though.
}
$value = substr($value, 5);
// $value is now the the desired value.
//do what you want and return the output.
}
于 2012-08-21T20:31:55.687 回答
0

根据 hook_menu http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/hook_menu/6上的文档

% 必须是条目的第一个字符。它可以是单独的,也可以是前置加载运算符的字符串。

所以不,你不能以这种方式提出论点。

但是,您可以使用循环在 hook_menu 中创建多个条目。

$results = some_query_function();
foreach ($results as $result) {
  $items['foo/bor-' . $result] = array();
}

您可以将两者混合使用:

$results = some_query_function();
foreach ($results as $result) {
  $items['foo/' . $result] = array();
  $itesm['foo/bar-' . result . '/%/edit'] = array(
  ...
  'page arguments' => array(2),
  );
}
于 2012-08-21T16:21:25.033 回答