我正在通过 hook_menu (Drupal 6) 初始化一些项目
...
$items['webtv/block/%/playlist/edit/%'] = array(
...
'page arguments' => array('webtv_playlist_form', 2, 5),
...
);
$items['webtv/block/%/playlist/edit/%/filter/new'] = array(
...
'page arguments' => array('webtv_playlist_param_form', 2, 5),
...
);
$items['webtv/block/%/playlist/edit/%/filter/%'] = array(
...
'page arguments' => array('webtv_playlist_param_form', 2, 5, 7),
...
);
return $items;
第一个条目是父条目并且工作正常。以下两个是子条目。最后两个菜单条目仍然无效并重定向到父页面 View 。我通过从路径定义中删除第一个通配符“%/”标记,通过一个小的修改来修复它。
意思是:
$items['webtv/block/%/playlist/edit/%/filter/%']
到
$items['webtv/block/playlist/edit/%/filter/%']
和
$items['webtv/block/%/playlist/edit/%/filter/new']
到
$items['webtv/block/playlist/edit/%/filter/new']
请通过添加通配符来帮助我解决我做错了什么?超过两个通配符是否无效?
最佳答案
文档中没有充分提及,但是您可以用于 Drupal 菜单回调的路径元素的数量是有限制的 - 请参阅 the MENU_MAX_PARTS constant .
对于 Drupal 6,此限制为七,您的第二条和第三条路径超出了该限制。您的两个修复都将元素计数减少到 7,这就是它们起作用的原因。
关于drupal - hook_menu() - 意外行为(较长的路径问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466055/