带word的Drupal url通配符

带word的Drupal url通配符,url,drupal,wildcard,Url,Drupal,Wildcard,可以在菜单中使用这种通配符吗 $items['foo/bar-%xxx'] ... 'page arguments' => array(1), 这样我就可以在参数中加入一些内容了?根据hook\u菜单上的文档 %必须是条目的第一个字符。它可以是单独的,也可以是在加载运算符前面加上前缀的字符串 所以,不,你不能用那种方式进行辩论 但是,您可以使用循环在hook_菜单内创建多个条目 $results = some_query_function(); foreach ($results as

可以在菜单中使用这种通配符吗

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

这样我就可以在参数中加入一些内容了?

根据hook\u菜单上的文档

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

所以,不,你不能用那种方式进行辩论

但是,您可以使用循环在hook_菜单内创建多个条目

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

不要把这句话当作冒犯性的回答,但不要照丹尼尔森317的建议去做。 原因是,通过这种方式,您将有几个不必要的菜单项,这将破坏您的网站性能。其次,我们通常不是这样做的

可以通过向函数注册主回调来实现这一点

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

当然,添加新结果时,菜单将不必更新。仅当菜单缓存刷新作为添加结果项的一部分运行或手动运行时。