Drupal 7 开发内部培训资料, 分头诗人

access callback 和 page callback 区别

赞成!
0
否决!

不知道2者什么时候该用哪个,我自己添加了一个module、然后在里面写了如下代码:

1
2
3
4
5
6
7
8
9
 function annotate_menu() {
    $items['admin/annotate/settings'] = array(
      'title' => t('Annotation settings'),
      'description' => t('Change how annotations behave.'),
      '<strong>page </strong>callback' => 'drupal_get_form',
      '<strong>page </strong>arguments' => array('annotate_admin_settings')
    );
  return $items;
}

当这里写page callback时,options里面没有configure 这里选项 ,只有修改成access callback时,才有configure,但是点击进去出现:无法显示此网页

网址为 http://localhost/mysvn/drupal-7.12/drupal-7.12/admin/annotate/settings 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。

1 个回答

赞成!
0
否决!
access callback 是权限控制的

1, 设置为true 就是所有人都能访问。

1
'access arguments' => true,

 

2, 也可以设置这样:

1
'access arguments' => array('feedback submit'),

然后增加一个hook_permission().

1
2
3
4
5
6
7
8
9
10
/**
* Implements hook_permission().
*/
function feedback_permission() {
  return array(
    'feedback submit' =>  array(
      'title' => t('feedback submit'),
    ),
  );
}

这样在后台用户权限那边就会出现如下图:

后面每个钩钩是对应每个用户角色,如角色:浏览者,注册用户,管理员

 

3, 当然,也可以直接写函数

1
2
3
'access arguments' => 'youraccess',
 
function youraccess(){填写权限}

 

page callback 是要来返回一个页面内容的

1
2
3
page callback = 'yourfunction',
 
function yourfunction(){return 'http://www.drupalla.com';}

那打开这个地址后,就会看到  返回 http://www.drupalla.com