如何在 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;
请注意,魔术方法不能一直使用,而标准方法可以。
我正在尝试访问用户对象中自定义字段的内容。
有些人提倡 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;
请注意,魔术方法不能一直使用,而标准方法可以。