欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

drupal 7 Warning: Missing argument 1 for custome_thirtieth_menu() 在 custome_thirtieth_menu() (行 2 在 /www/web/aaaa_bbbbb-ict_com/public_html/sites/all/modules/custom/custome_thirtieth/custome_thirtieth.module). AG chatgpt 有大用

function custome_thirtieth_menu(&$items)

{

    $items['get_keyword_file_info'] = array(

        'title' => '得到macos上关键字文件信息',

        'page callback' => 'custome_thirtieth_get_keyword_file_info',

        'access arguments' => array('access content'),

    );

    return $items;

}


drupal 7 Warning: Missing argument 1 for custome_thirtieth_menu() 在 custome_thirtieth_menu() (行 2 在 /www/web/aaaaa_bbbbb-ict_com/public_html/sites/all/modules/custom/custome_thirtieth/custome_thirtieth.module).


您的代码问题是因为 Drupal 7 的 hook_menu() 函数定义错误导致的。在 Drupal 7 中,hook_menu() 不需要手动传入参数,系统的菜单系统会自动处理调用。

错误原因

您的代码中:

php
function custome_thirtieth_menu(&$items) { ... }
  • 错误&$items 参数是手动传入引用,但 Drupal 7 不会这样调用 hook_menu(),所以会报错 Missing argument 1 for custome_thirtieth_menu()


正确修改方式

hook_menu() 应该写成:

php
function custome_thirtieth_menu() {    $items = array(); // 初始化数组        $items['get_keyword_file_info'] = array(        'title' => '得到 macOS 上关键字文件信息',        'page callback' => 'custome_thirtieth_get_keyword_file_info',        'access arguments' => array('access content'), // 访问权限    );        return $items; // 返回菜单项 }

修改点总结

  1. 移除 &$itemshook_menu() 不需要手动传入参数,系统会自动调用的。

  2. 初始化 $items:函数内部先定义 $items = array();,然后填充菜单项。

  3. 返回 $items:确保 return $items;,Drupal 会读取这个返回值注册菜单。


其他注意事项

  1. page callback 函数存在?

  • 你定义的 custome_thirtieth_get_keyword_file_info 必须存在,否则访问页面时会报 404。

  • 示例实现:

    php
    function custome_thirtieth_get_keyword_file_info() {    return "这是 macOS 关键字文件信息页面"; }
  • 访问权限 access arguments

    • 'access content' 是 Drupal 默认权限,表示“能查看内容的用户”可访问。

    • 如果需要更高权限,可以改成 'administer site configuration' 等。


    修改后,缓存(drush cc all 或 admin/config/development/performance 清除缓存)再测试,应该就不会报错了。


    普通分类: