Drupal 7示例模块,找不到页面,为什么?

时间:2011-09-23 13:14:13

标签: drupal path

我写了一个简单的测试模块示例,2个文件,test.module,test.info,并在drupal 7模块中启用它们。

我清除了所有缓存,但是当我尝试去localhost / drupal / hello时,我发现drupal 404页面找不到,为什么会这样?

这是我的代码:

<?php

function test_world_help($section) {
  switch ($section) {
    case 'admin/help#hello_world':
      $output = '<p>Hello world help...</p>';
      return $output;
    case 'admin/modules#description':
      return 'Hello world module description...';
  }
}

function test_world_menu($may_cache) {
  $items = array();

  if ($may_cache) {
  }
  else {
    $items['hello'] = array(
      'title' => 'Hello world page...', 
      'callback' => 'test_world_page', 
      'access' => TRUE, 
      'type' => MENU_CALLBACK 
    );
  }

  return $items;
}

function test_world_page() {
  return '<p>Hello world!</p>';
}

3 个答案:

答案 0 :(得分:2)

您之前发布了几乎相同的问题oncetwice。为什么不更新原始版本而不是发布新版本?

  • hook_menu()在Drupal 7中没有$ may_cache参数。您应该删除它。但是,它不应该解决您的问题,因为它没有设置和错误。因此,仍应填充$ items。

  • 正如jprofitt所说,你应该将'回调'更改为'page callback'是正确的。

  • 没有“访问”这样的东西,但有“访问回调”和“访问参数”。您很可能正在寻找“访问回调”。但是,您不能将其设置为“true”。它需要一个返回'true'或'false'的函数名。它默认为'user_access',所以你应该保持这种方式。但是,您可能希望将“访问参数”设置为“访问内容”。

下面的代码是否更好用?

function test_world_menu() {

  $items = array();

  $items['hello'] = array(
    'title' => 'Hello World!', 
    'page callback' => 'test_world_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK 
    );

  return $items;
}

好像你还没看过documentation。我可能错了。但是,当您想要学习有关工作原理的基础知识时,api.drupal.org上的文档始终是一个良好的开端。

答案 1 :(得分:1)

您应该将'callback'更改为'page callback',因为我不相信hook_menu()只有一个简单的“回调”选项。因为你正在使用Drupal 7,它的hook_menu()实际上没有参数。

答案 2 :(得分:0)

卸载并重新安装自定义模块。我希望这能帮到您。因为drupal核心必须知道使用hook_menu创建的新创建的路径。