Drupal::currentUser()
возвращает объект , реализующий Drupal\Core\Session\AccountProxyInterface
. Это отличается от того, что возвращено User::load()
, который является объектом реализации Drupal\user\UserInterface
.
Это означает, что вы не уверены, что вы получили полный User
объект с загруженными полями, но даже не уверены, что вы получили User
объект. Как следствие, вы вызываете вызов некоторых методов, доступных в User
классе, таких как User::get()
. Вы можете позвонить AccountInterface::id()
, который возвращает идентификатор пользователя; после этого вы можете загрузить полный User
объект User::load()
и получить доступ ко всем модулям полей, прикрепленным к объекту.
use Drupal\Core\Session\AccountProxyInterface;
use Drupal\user\Entity\User;
$account = User::load(\Drupal::currentUser()->id());
С помощью $account
вы можете получить доступ ко всем полям, связанным с учетной записью пользователя.