Hook_boot и доступ пользователя - PullRequest
1 голос
/ 29 февраля 2012

Я перезаписываю hook_boot в своем проекте drupal 7.10 и пытаюсь загрузить из него учетную запись пользователя.Я получаю следующую ошибку:

Вызов неопределенной функции entity_load ()

Есть идеи, почему это может произойти?Вот мой код.

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

Ответы [ 2 ]

4 голосов
/ 16 июня 2012

Если вы не можете переместить его в 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'] будет содержать "путь / псевдоним".Если требуется "узел / 306", вызов drupal_bootstrap (DRUPAL_BOOTSTRAP_FULL) делает эту функцию доступной.

0 голосов
/ 29 февраля 2012

user_load () вызывает user_load_multiple (), который вызывает entity_load (), который хранится в common.inc. Однако «Этот хук вызывается до того, как модули или большинство включаемых файлов загружаются в память. Это происходит, когда Drupal все еще находится в режиме начальной загрузки.

Есть ли причина, по которой вы не используете hook_init ():

function appcore_init() {
  $account = user_load(array('uid' => 1)); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...