简单的钩子菜单没有做它应该做的事情

时间:2010-08-10 08:35:53

标签: drupal drupal-6

如果用户以管理员身份登录,则可以正常工作,但如果用户已登录,则会向他们发送其个人资料页面。为什么?。我可以查看哪些文件?

$items['go/to/school'] = array(
  'title' => 'Some page Title',
  'page callback' => 'my_function',
  'access callback' => 'my_access',
  'type' => MENU_CALLBACK
);

function my_function() {
  echo "WHATS UP"; //NEVER SHOWS UP
}

2 个答案:

答案 0 :(得分:3)

您的回调function myaccess()必须为该用户返回TRUE,否则该用户无权访问。此回调函数可以通过access arguments获取参数。如果您未提供access callback,则默认为function user_access($access_string),在这种情况下,您仍需提供access arguments,例如“访问内容”。

另请注意,在hook_menu代码中每次更改后,您必须刷新菜单缓存,因为这是缓存的大量退出。

答案 1 :(得分:0)

如果您希望所有用户(登录或匿名)都能看到此页面,最简单的方法是在访问回调中返回TRUE。例如:

'access callback' => TRUE,

否则,就像berkes所说,您的访问回调必须为该用户返回TRUE以查看该页面。例如:

function my_access() {
  global $user;
  return in_array('authenticated user', $user->roles);
}

如果用户具有“经过身份验证的用户”角色,则返回TRUE,否则返回FALSE。