0

据我了解,我的问题是我(更确切地说,我的客户是)运行旧版本的 Drupal,特别是 Core 6.26 如果您对任何其他规格感到好奇,我很乐意透露。

有了这个,我用下面的菜单钩子做了一个新模块。

function checkin_menu(){
    $items = array();
    $items['checkin'] = array(
        'title' => 'Checkin'
        ,'type' => MENU_CALLBACK
        ,'access arguments' => array('checkin')
        ,'page callback' => 'checkin'
    );
}

权限完全符合我的预期。有一个名为“Checkin”的部分与 .info 文件中指定的模块名称相同,还有一个项目授予“checkin”权限

后来我将模块扩展为具有两条不同的路径。第二个应该仅供管理员使用。

function checkin_menu(){
    $items = array();
    $items['checkin'] = array(
        'title' => 'Checkin'
        ,'type' => MENU_CALLBACK
        ,'access arguments' => array('create a checkin')
        ,'page callback' => 'checkin'
    );
    $items['checkin_admin'] = array(
        'title' => 'Checkin Admin'
        ,'type' => MENU_CALLBACK
        ,'access arguments' => array('view all checkins')
        ,'page callback' => 'device_checkin_page'
    );
    return $items;
}

令我惊讶的是,“创建签到”或“查看所有签到”都没有出现。我仍然在权限页面上显示原始的“签到”。这几天我一直在寻找答案。帮助一个人?

4

1 回答 1

3

权限由另一个钩子定义,即hook_perm

所以你应该做这样的事情:

/**
 * Implementation of the hook_perm()
 */
function checkin_perm() {
  return array (
    'create a checkin',
    'view all checkins',
  );
}
于 2013-04-03T08:20:38.773 回答