首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从块插件Drupal 8上的字段中获取标签

从块插件Drupal 8上的字段中获取标签
EN

Drupal用户
提问于 2018-05-28 10:10:06
回答 1查看 135关注 0票数 1

我试图使用特定字段类型的所有标签( entity_reference_revisions )创建一个带有标签列表的块。

我创建了一个块插件并加载了EntityTypeManager服务。我试过:

代码语言:javascript
复制
    $values = array(
      'targetEntityType' => 'node',
      'bundle' => $bundle,
      'mode' => $view_mode,
      'status' => TRUE,
    );
    $entity_view_display = $this->entityType->getStorage('entity_view_display')->create($values);
    $fields = $entity_view_display->get('fieldDefinitions');
    $labels = [];
    foreach ($fields as $field) {
      if($field->getFieldStorageDefinition()->getType() == 'entity_reference_revisions') {
        $labels[] = $field->get('label');
      }
    }

问题是,我得到的字段的顺序是错误的,而我不能得到权重属性。

EN

回答 1

Drupal用户

发布于 2018-05-28 12:44:53

我用entityManager解决了它加载字段定义的问题,得到了weight属性,然后按权重排序标签。

代码语言:javascript
复制
$node = $this->requestStack->getCurrentRequest()->get('node');
$bundle = $node->getType();
$view_mode = 'full';

$fields = [];
foreach($this->entityManager->getFieldDefinitions('node', $bundle)  as $field_name => $field_definition) {
  if($field_definition->getType() == 'entity_reference_revisions') {
    $field_name = $field_definition->getName();
    $element = $node->$field_name->view($view_mode);
    $fields[] = [
      'name' => $field_name,
      'label' => $field_definition->getLabel(),
      'weight' => $element['#weight'],
    ];

  }
}

usort($fields, [$this, 'sortByWeight']);
票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/262315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档