Hook_boot和用户访问权限

时间:2012-02-29 02:50:15

标签: drupal hook drupal-modules

我在drupal 7.10项目中覆盖了hook_boot,并尝试从中加载用户帐户。我收到以下错误。

  

调用未定义的函数entity_load()

为什么会发生这种情况的想法?这是我的代码。

function appcore_boot() {
   drupal_load('module', 'user');
   $account = user_load(array('uid' => 1)); 
}

2 个答案:

答案 0 :(得分:4)

如果您无法将其移至hook_init,则可以通过调用以下方式确保加载common.inc的简单方法:

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

在致电hook_boot之前,请将其放在user_load内。您可能甚至不需要DRUPAL_BOOTSTRAP_FULL来加载common.inc,但这是我对其进行测试的。

我在这里指出的是current_path的文档,其中说:

  

此函数在hook_boot()中不可用,因此请改用$ _GET ['q']。但是,在执行此操作时要小心,因为在示例#3的情况下,$ _GET ['q']将包含“path / alias”。如果需要“node / 306”,则调用drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL)可使此功能可用。

答案 1 :(得分:0)

user_load()调用user_load_multiple(),它调用entity_load(),它存储在common.inc中。但是,“在模块或大多数包含文件加载到内存之前调用此挂钩。当Drupal仍处于引导模式时会发生此错误。

你有没有理由不使用hook_init():

function appcore_init() {
  $account = user_load(array('uid' => 1)); 
}