如何在 Drupal 8 的 Drupal 用户对象中访问自定义字段 属性

How to access custom field property in Drupal User Object in Drupal 8

我正在尝试访问用户对象中自定义字段的内容。

有些人提倡 user_load 的用户。但根据 Drupal 的说法,这已被弃用。

in Drupal 8.x, will be removed before Drupal 9.0. Use \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。

我确定这很简单,但我没有看到。 (怀念非 OOP 的美好时光!)

$userProfile 是一个对象,因此应通过方法调用数据。 可以在 Drupal documentation.

中找到所有方法的列表

长话短说,所有 Drupal 实体都对 return 字段值使用相同的方法。 get('field_name') 方法 returns 字段对象和 getValue() returns 字段值。

你的情况是:

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

通过使用所谓的魔术方法,代码看起来会更清晰,您可以简单地获取值:

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

请注意,魔术方法不能一直使用,而标准方法可以。