【发布时间】:2010-06-10 22:25:30
【问题描述】:
有人可以解释 Drupal 中的“访问参数”吗?相信我,我试过用谷歌搜索它,但我并没有清楚地掌握它。
【问题讨论】:
有人可以解释 Drupal 中的“访问参数”吗?相信我,我试过用谷歌搜索它,但我并没有清楚地掌握它。
【问题讨论】:
在 /admin/user/permissions 中,您会看到很多访问选项。它们来自 drupal 模块,并让站点管理员将特定权限分配给用户角色(drupal 默认提供“匿名”和“注册”角色)。 模块通过hook_perm 声明它们,它们很容易使用:
function mymodulename_perm {
return array('use custom feature', 'use the other custom feature');
}
它们会出现在那里,随时可以使用。现在,在您的任何功能中,您都可以通过user_access 检查用户访问权限,这同样易于使用:
if (user_access('use custom feature')) {
//do something
}
【讨论】:
访问参数是传递给检查用户是否可以访问菜单的函数的参数。
给定一个菜单回调定义如下
$items['blog/feed'] = array(
'title' => 'RSS feed',
'page callback' => 'blog_feed',
'access callback' => 'custom_module_blog_access',
'access arguments' => array('feed'),
'type' => MENU_CALLBACK,
);
函数custom_module_blog_access() 将被称为custom_module_blog_access('feed')。如果函数返回TRUE,那么用户将被授予访问菜单回调的权限;不同的是,用户将看到错误 403 页面(访问被拒绝)。
通常情况下,访问回调是没有定义的,默认情况下 Drupal 会使用user_access()。
【讨论】:
'type' => MENU_CALLBACK, 你能告诉我更多关于 MENU_CALLBACK ...何时以及如何使用它
:) 先阅读hook_menu(),如果不清楚MENU_CALLBACK 的作用,请提出问题。
对于使用预定义的有效权限,如系统权限:
复制权限字符串并将其添加到您的“访问参数”数组中:
function mymodule_menu() {
$items['admin/config/mymodule_config'] = [
'title' => 'MyModule',
'page callback' => 'drupal_get_form',
'access callback' => '_mymodule_admin_form',
'access arguments' => array('administer site configuration'),
'type' => MENU_CALLBACK
];
return $items;
}
【讨论】: