我正在通过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']
请添加外卡,帮助我解决出错的问题?超过两张外卡是无效的吗?
答案 0 :(得分:5)
文档中没有充分提及,但是可以用于Drupal菜单回调的路径元素数量有限 - 请参阅the MENU_MAX_PARTS constant。
对于Drupal 6,此限制为7,超出了你的第二和第三条路径。这两个修复都将元素数量减少到7,这就是为什么这些工作。
答案 1 :(得分: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']