使用hook_user_load()修改用户对象

时间:2011-10-28 17:16:29

标签: drupal

在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 个答案:

答案 0 :(得分:2)

你得到一个用户对象数组,因为钩子是从user_load_multiple()调用的,它通常调用DrupalDefaultEntityController::load(),然后调用DrupalDefaultEntityController::attachLoad()

可以添加自定义属性,但不能覆盖从“{users}”表加载的默认属性;从文档中报告,在这种情况下,从缓存加载用户对象时可能会出现问题,这正是实体API通常所做的。