我在drupal 7.10项目中覆盖了hook_boot,并尝试从中加载用户帐户。我收到以下错误。
调用未定义的函数entity_load()
为什么会发生这种情况的想法?这是我的代码。
function appcore_boot() {
drupal_load('module', 'user');
$account = user_load(array('uid' => 1));
}
答案 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));
}