我试图在drupal中实现hook_menu.
function menufun_menu() {
$items['menufun'] = array(
'title' => 'Menu Fun',
'title callback' => 'menufun_title',
'page callback' => 'menufun_greeting',
'file' => 'menufun_greeting.inc',
'page arguments' => array('aaa', 'bbb', 'ccc', 'ddd'),
'access callback' => 'user_access',
'access arguments' => array('receive greeting'),
'type' => MENU_NORMAL_ITEM,
'weight' => -1,
);
$items['menufun/farewell'] = array(
'title' => 'Farewell',
'page callback' => 'menufun_farewell',
'file' => 'menufun_greeting.inc',
'access callback' => 'user_access',
'access agruments' => array('receive greeting'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码会出现这两个错误:
Notice: Undefined offset: 0 in _menu_check_access() (line 619 of /Applications/XAMPP/xamppfiles/htdocs/drupal/includes/menu.inc).
Notice: Undefined offset: 1 in _menu_check_access() (line 619 of /Applications/XAMPP/xamppfiles/htdocs/drupal/includes/menu.inc).
Run Code Online (Sandbox Code Playgroud)
如果我改变,上述2个错误将不会显示
'access callback' => 'user_access',
Run Code Online (Sandbox Code Playgroud)
至
'access callback' => TRUE,
Run Code Online (Sandbox Code Playgroud)
但我已经以管理员身份登录,并且我向所有用户授予访问权限,并且我尝试重新加载模块,尝试重新安装drupal以使数据库保持干净,但我仍然遇到相同的错误,任何建议?
你在第二个菜单定义中拼写错误的"参数".
'access agruments' => array('receive greeting'),
Run Code Online (Sandbox Code Playgroud)
应该
'access arguments' => array('receive greeting'),
Run Code Online (Sandbox Code Playgroud)
当你把它切换到'access callback' => TRUE,它时忽略了参数,因为它被告知它不需要做任何检查,但是实际的回调它试图找到access arguments但不能.