You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 8控制器中如何获取指定用户的名与姓?

获取Drupal 8特定用户的first_name和last_name

嘿,这事儿很好解决!你已经掌握了加载特定用户实体的方法,接下来获取自定义的first_name和last_name字段,和用getUsername()的逻辑是通的——只不过这俩属于自定义用户字段(不是Drupal内置的用户名),得用实体字段的标准读取方式来处理。

核心逻辑

Drupal的用户实体(User)里的自定义字段,都能通过get()方法拿到字段对象,再通过value属性提取实际值。这里要注意:必须用字段的机器名,比如你创建字段时生成的field_first_name和field_last_name(Drupal通常会自动给自定义字段加上field_前缀)。

示例代码

// 先加载目标用户实体(和你之前的代码保持一致)
$other_id = $message->user_id;
$other_user_object = \Drupal\user\Entity\User::load($other_id);

// 获取first_name和last_name字段值
$first_name = $other_user_object->get('field_first_name')->value;
$last_name = $other_user_object->get('field_last_name')->value;

// 要是需要拼接成全名也很方便
$full_name = $first_name . ' ' . $last_name;

几个小提示

  • 务必替换成你实际的字段机器名!不确定的话,可以去后台「结构 -> 用户 -> 管理字段」页面查看。
  • 如果你的字段是多值类型(不过名字类字段一般是单值),可以用->first()->value来取第一个值,比如:$other_user_object->get('field_first_name')->first()->value;
  • 建议先判断用户实体是否加载成功,避免空指针报错:
if ($other_user_object) {
  $first_name = $other_user_object->get('field_first_name')->value;
  // 后续业务逻辑
}

内容的提问来源于stack exchange,提问作者kov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:24:09