使用另一个数据作为组关系中的字段

问题描述 投票:0回答:1

我问自己如何做以下事情:

系统中的每个用户都有一个头像(用户帐户中的媒体字段)。

我使用群组模块来构建“组织”。每个组织都有成员。当用户添加到组织时,管理员可以选择是否向添加的成员添加“头像”。头像字段在关系里

目标如下:

如果关系中设置了头像,则使用它; 如果没有,请使用用户个人资料中的标准头像;

我使用 hook_preprocess_group_relationship 实现了一个自定义模块,并检查当前关系是否包含头像,如果不包含头像,我想将用户配置文件中的头像附加到“内容”数组。但我不知道该怎么做...

实际上我使用以下代码:

    if (!isset($variables['content']['field_avatar']['#theme'])) {
      $user = $gr->getEntity();
      $medias = $user->get('field_user_avatar')->referencedEntities();
      if (count($medias)) {
        $media = $medias[0];
        $render = \Drupal::entityTypeManager()->getViewBuilder('media')->view($media, 'default');
        $variables['content']['field_avatar'] = $render;
      }
    }

原来的field_avatar内容是一个“主题字段”,但我替换的内容是一个媒体,所以它不显示它。

关于如何管理替换以模仿相同用途的想法?

提前致谢。

drupal drupal-10
1个回答
0
投票

好的...五分钟前我发现了这个线程:https://drupal.stackexchange.com/questions/240002/how-to-apply-a-field-formatter-to-a-node-field-programmatically

它适用于我的情况:

    if (!isset($variables['content']['field_avatar']['#theme'])) {
      $user = $gr->getEntity();
      $medias = $user->get('field_user_avatar')->referencedEntities();
      if (count($medias)) {
        $view = \Drupal::entityTypeManager()->getViewBuilder('user')->viewField($user->get('field_user_avatar'), 'default');
        $variables['content']['field_avatar'] = $view;
      }
    }
© www.soinside.com 2019 - 2024. All rights reserved.