如何在Drupal 8中加载用户配置文件类型?

时间:2017-03-30 12:50:01

标签: drupal drupal-8

我想按用户ID加载用户个人资料模块数据:

  

代码:

$profile_type = 'my_profile';
$user_id = 1;
$current_user = User::load($user_id);
$active_profile = $this->entityTypeManager()->getStorage('profile')->loadByUser($current_user, $profile_type);

print_r($active_profile);

但是,它会返回以下错误。

  

错误:

The website encountered an unexpected error. Please try again later.
Recoverable fatal error: Argument 1 passed to Drupal\profile\ProfileStorage::loadByUser() must implement interface Drupal\Core\Session\AccountInterface, null given, called in C:\xampp\htdocs\catchow\htdocs\modules\custom\catchow_registration_contactlab\src\Controller\CatchowRegistrationContactlabController.php on line 122 and defined in Drupal\profile\ProfileStorage->loadByUser() (line 16 of modules\contrib\profile\src\ProfileStorage.php).
Drupal\profile\ProfileStorage->loadByUser(NULL, 'authenticated_user') (Line: 122)

2 个答案:

答案 0 :(得分:1)

这很晚了,但是其他人会来这里(就像我一样)。

我必须进入个人档案模块源代码才能找到它,但是我想当你考虑它时很明显:

$list = \Drupal::entityTypeManager()
  ->getStorage('profile')
  ->loadByProperties([
    'uid' => $account->id(),
    'type' => 'profile_type',
  ]);

您可能希望将其包装在服务中-如果不这样做,则应该仔细考虑一下为什么不这样做:-)

答案 1 :(得分:0)

您是否尝试使用user_load功能代替User::Load

$current_user = user_load($user_id);

https://api.drupal.org/api/drupal/core%21modules%21user%21user.module/function/user_load/8.2.x

当你转储$current_user时,你有一些数据吗?