我目前正在使用Drupal 7,我正在编写一个自定义代码,以便具有特定权限的用户(“使用业务仪表板”)应该在其主菜单中看到一个菜单项。问题是只有我(管理员)才能看到这个菜单项。我已经能够在权限页面上创建自定义权限,并将其设置为允许访问“admin”和我的用户特定角色,并实现了以下代码(永远不要找到代替模块名称的“xxxxxx”,我宁愿暂时保持匿名,但只知道它们都代替了机器可读的模块名称):
function xxxxxx_menu(){
$items = array();
$items['xxxxxxx'] = array(
'title' => 'Business Owner Dashboard',
'page callback' => '_xxxxxx_page',
'access arguments' => array('use business dashboard'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function xxxxxx_permission(){
return array(
'use business dashboard' => array(
'title' => t('Have access to business dashboard'),
'description' => t('Allow user to send out SMS messages via database query forms'),
),
);
}
当我作为具有“使用业务仪表板”的角色特定权限的测试用户登录时,我看不到菜单项。我确信这非常简单,但我一直在谷歌搜索和刺激代码几个小时。任何帮助将不胜感激!
答案 0 :(得分:3)
也无法解决这个问题。您是否可以尝试分解访问回调,如果它不起作用,至少它会给你一个关于发生了什么的提示。
您的代码可以这样:
function xxxxxx_menu(){
$items = array();
$items['xxxxxxx'] = array(
'title' => 'Business Owner Dashboard',
'page callback' => '_xxxxxx_page',
'access callback' => 'my_custom_access_callback',
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function my_custom_access_callback()
{
if(user_access('use business dashboard'))
return TRUE;
return FALSE;
}
直到我,如果这样有效......穆罕默德。