drupal中user_access和hook_perm之间的关系是什么?

wam*_*amp 3 php drupal

似乎这两个函数都用于检查用户是否有一些优先权.

而且差别对我来说并不明显.

有人可以详细说明吗?

acm*_*acm 8

如果你实现hook_perm这将定义给定模块的权限,如下所示

/**
 * Implementation of hook_perm().
 */
function yourmodule_perm() {
  return array('can select', 'can update', 'can delete');
}
Run Code Online (Sandbox Code Playgroud)

然而,权限本身,没有任何意义......控制用户可以做什么和不能做什么的一种方法是user_access:

// @ some other module function
if (user_access('can delete')){
  // delete stuff
} else {
  drupal_access_denied();
}
Run Code Online (Sandbox Code Playgroud)

此外,通过执行以下hook_perm操作,可以在设置模块菜单时使用--defined权限hook_menu:

// @hook_menu
$items['modulepath'] = array(
    'title'            => 'modulename',
    'page callback'    => 'module_function',
    'access callback'  => 'user_access',
    'access arguments' =>  array('can select'),
    'type'             => MENU_NORMAL_ITEM,
);
Run Code Online (Sandbox Code Playgroud)

不要忘记在以下位置配置用户权限:admin/user/permissions