Как получить доступ к свойству настраиваемого поля в Drupal User Object в Drupal 8 - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь получить доступ к содержимому пользовательских полей в объекте пользователя.

Некоторые защищают пользователя user_load.Но, по словам Drupal, это устарело.

в Drupal 8.x будет удалено до Drupal 9.0.Используйте \ Drupal \ user \ Entity \ User :: load ().

Поэтому я попытался использовать Entity :: load.Он загружает объект, и в моей IDE я вижу значения ... но я не могу загрузить локальную переменную со значением.Вот код, который не работает.

public function arguments($arg1) {

    $userProfile = \Drupal\user\Entity\User::load($arg1);
    $display_username = $userProfile->getAccountName();

    $current_user = user_load($user_id);

    $lastname = $userProfile->values["field_user_last_name"]["x-default"][0]["value"];

Эта строка пришла с пути, который я видел в возвращенном объекте.Однако, как видно на скриншоте из IDE, значение возвращается NULL.

Я уверен, что это нечто простое, чего я не вижу.(пропуская старые добрые времена не-ООП!)

enter image description here

1 Ответ

0 голосов
/ 31 января 2019

$userProfile - это объект, поэтому данные должны вызываться через методы.Список всех методов можно найти в документации Drupal .

Короче говоря, все сущности Drupal используют одни и те же методы для возврата значения поля.Метод get('field_name') возвращает объект поля, а getValue() возвращает значение поля.

В вашем случае это будет:

$field_value = $userProfile->get('field_user_last_name')->getValue()[0]["value"];

ИспользуяВызывая магические методы, код будет выглядеть еще чище, и вы можете просто получить значение как:

$field_value = $userProfile->field_user_last_name->value;

Обратите внимание, что магические методы не всегда можно использовать, в то время как стандартные методы могутбудет.

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