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
相关产品推荐
相关产品推荐

