Изменение пользовательского объекта с помощью hook_user_load () - PullRequest
2 голосов
/ 28 октября 2011

В Drupal 6 вы можете использовать код, подобный следующему:

function example_user($op, &$edit, &$account, $category = NULL) {
  switch($op) {
    case 'load':
      $account->fb_id ='xyz'
      break;
  }
}

В Drupal 7 документация для hook_user_load() гласит следующее:

В связи сстатический кеш в user_load_multiple() вы не должны использовать этот хук для изменения пользовательских свойств, возвращаемых самой таблицей {users}, так как это может привести к ненадежным результатам при загрузке из кеша.

Почему яполучить пользователей, а не просто пользователя?

Можно ли добавить свойства к этому?

http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_load/7

1 Ответ

2 голосов
/ 28 октября 2011

Вы получаете массив пользовательских объектов, потому что ловушка вызывается из user_load_multiple () , который обычно вызывает DrupalDefaultEntityController :: load () , который затем вызывает DrupalDefaultEntityController:: attachLoad () .

Можно добавлять пользовательские свойства, но не переопределять свойства по умолчанию, загружаемые из таблицы "{users}";как сообщается в документации, в этом случае вы можете столкнуться с некоторой проблемой при загрузке пользовательского объекта из кэша, что обычно делает API сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...