我试图使用特定字段类型的所有标签( entity_reference_revisions )创建一个带有标签列表的块。
我创建了一个块插件并加载了EntityTypeManager服务。我试过:
$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');
}
}问题是,我得到的字段的顺序是错误的,而我不能得到权重属性。
发布于 2018-05-28 12:44:53
我用entityManager解决了它加载字段定义的问题,得到了weight属性,然后按权重排序标签。
$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']);https://drupal.stackexchange.com/questions/262315
复制相似问题