Drupal 7自定义模块错误

Jan*_*nda 6 drupal drupal-7

我在Drupal中使用自定义模块,但它给了我以下两个警告:

Warning: Invalid argument supplied for foreach() in menu_unserialize() (line 377 of /site/includes/menu.inc).
Warning: Invalid argument supplied for foreach() in menu_unserialize() (line 377 of /site/includes/menu.inc).
Run Code Online (Sandbox Code Playgroud)

这是模块的代码:

<?php

function homepage_coords_menu(){
return array(//$items
    'homepage_coords/%node/%/%' => array(
        'page callback' => 'homepage_coords_ajax_callback',
        'page arguments' => array(1,2,3),
        'access arguments' => TRUE,
        'type' => MENU_CALLBACK,
    )
);
}

function homepage_coords_ajax_callback($nid=0,$x=0,$y=0){
    return 'nid:'.$nid.' x:'.$x.' y:'.$y;
}

?>
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能修复这些警告?

任何有效的改进也将不胜感激:)

Ber*_*dir 21

  • 要允许访问所有,您需要将"访问回调"设置为TRUE,而不是"访问参数".另外,您确定没有该页面的访问定义吗?

  • 您的编码风格是非典型的,当您习惯于默认的方式时,这很难阅读.有关示例,请参阅node_menu().我最初以为你是用老式的Drupal 5方式做的.

  • 看起来第一个参数是一个节点,我建议你使用%node,然后菜单系统会自动加载节点,如果参数是有效的节点id,则只调用你的页面回调.键看起来像这样:"homepage_cords /%node /%/%".

  • 编码标准不是创新的东西.它的确切程度并不重要,但标准的使用始终如一.并且不会发生变化,因为有人通过讨论和更新标准(http://drupal.org/coding-standards)来做不同的事情.如果你想贡献一些东西,你将被迫跟随CS,所以你最好习惯它;) (3认同)
  • +1坚持编码传统,这是一个社区项目...顺其自然,除非你打算尝试重定向船只,这通常是一个好主意. (2认同)

Mik*_*ike 6

我遇到了这个错误,因为我将字符串传递给"页面参数"而不是数组.

$ items ['page arguments'] = array('module_my_form');