我写了一个简单的测试模块示例,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>';
}
答案 0 :(得分:2)
您之前发布了几乎相同的问题once和twice。为什么不更新原始版本而不是发布新版本?
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创建的新创建的路径。