Drupal 7访问回调无法正常工作

时间:2014-06-27 22:51:59

标签: drupal-7 access-control anonymous administrator hook-menu

Drupal 7 Hook_menu访问回调没有返回正确的布尔值。

在我们开始之前。是!缓存被清除......很多。

我实现了一个简单的测试功能:

$items['tutor_review_selection'] = array(
    'title'             => t('example'),
    'page callback'     => 'my_module_example_page',
    'access callback'   => my_module_access( array('administrator') ),
    'type'              => MENU_NORMAL_ITEM
);

function my_module_access( $roles ) {
    global $user;

    $check = array_intersect($roles, array_values($user->roles));

    return empty( $check ) ? FALSE : TRUE;
}

对于已登录和已注销的用户,此值返回TRUE。

以下是重要部分:

我打电话给'my_module_access'功能在' my_module_example_page'功能,它工作正常。

任何人都可以了解为什么这在访问回调中不起作用?

可能与操作顺序有关?

缓存已清除。

1 个答案:

答案 0 :(得分:1)

如果您查看Drupal 7 hook_menu documentation,则会看到以下代码:

  function mymodule_menu() {
    $items['abc/def'] = array(
      'page callback' => 'mymodule_abc_view',
      'page arguments' => array(1, 'foo'),
    );
    return $items;
  }

'page callback'接受一个字符串,这是回调函数名。要发送给该函数的参数在'page arguments'数组中提供。

编辑请注意,您应该创建权限并将角色分配给该权限,然后检查权限,而不是检查特定角色。