是否可以在菜单中使用这样的通配符?
$items['foo/bar-%xxx']
...
'page arguments' => array(1),
这样我就可以争论吧?
不要让这个令人反感的回复,但不要做 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.
}
根据 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),
);
}