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

标签 drupal drupal-6 drupal-modules drupal-hooks

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

相关文章:

forms - 在 Drupal 6 中向管理员添加系统变量的编辑功能

drupal - 根据分类术语生成 url 别名

drupal ----被 $form_state 参数弄糊涂了

apache - 只能访问Drupal主页

drupal - 如何为挂起的站点调试 nginx/php-fpm?

drupal - 加载节点的先前修订版

drupal - 检测新的 Drupal 模块中启用了哪些其他模块

drupal - 在 Drupal 中禁用/节点 View 和其他隐藏 View ?

drupal - 如何在 drupal 7 中启用/禁用修订

drupal - 更改搜索表单操作不适用于自定义搜索模块,Drupal 6