3

我正在通过 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;

第一个条目是父条目并且工作正常。以下两个是子条目。最后两个菜单条目仍然无效并重定向到父页面视图。我通过从路径定义中删除第一个通配符 '%/' 标记来修复它。

方法:

$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']

请通过添加通配符帮助我解决我做错了什么?难道两个以上的外卡都无效?

4

2 回答 2

5

文档中没有充分提及它,但是可以用于 Drupal 菜单回调的路径元素的数量是有限制的 - 请参阅MENU_MAX_PARTS 常量

对于 Drupal 6,此限制为 7,您的第二条和第三条路径超出了该限制。您的两个修复都将元素计数减至七个,这就是它们起作用的原因。

于 2010-08-12T17:03:57.147 回答
0

我已经解决了这个问题,除了我提到的第一个通配符。但我找不到任何合乎逻辑的理由。

$items['webtv/block/%/playlist/edit/%/filter/%']

$items['webtv/block/%/playlist/edit/%/%']

$items['webtv/block/%/playlist/edit/%/filter/new']

$items['webtv/block/%/playlist/edit/%/new']
于 2010-08-12T10:16:52.213 回答