drupal之hook_menu()之意外行为(较长的路径问题)

lonelyxmas 阅读:42 2024-11-24 20:56:43 评论:0

我正在通过 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,这就是它们起作用的原因。


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号