【发布时间】:2017-08-23 10:12:56
【问题描述】:
我精通 Drupal 7,我从 global $user 获取当前用户对象,但如何在 Drupal 8 中获取它?
【问题讨论】:
我精通 Drupal 7,我从 global $user 获取当前用户对象,但如何在 Drupal 8 中获取它?
【问题讨论】:
一种为当前活动用户获取完整 drupal 用户对象的线性方法:
$account = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
为什么不只是 Drupal::currentUser() ?因为大多数时候它是不够的,因为你需要一个完全加载的用户对象,而它不是:
【讨论】:
请使用以下代码获取 Drupal 8 中的当前用户对象:
$user = \Drupal::currentUser();
【讨论】:
$user = \Drupal::currentUser();
要获取当前的用户 ID,您可以使用:
$user = User::load(\Drupal::currentUser()->id());
【讨论】:
根据entity api,我们不应该使用User::load。相反,像这样使用 entityTypeManager:
$user_id = \Drupal::currentUser()->id();
$user_entity = \Drupal::entityTypeManager()->getStorage('user')->load($user_id);
【讨论】: