如何获取drupal 8中字段的格式设置?

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

我有一个 drupal 8 项目,客户要求我获取内容类型中字段的格式设置,以响应移动应用程序的 api。我创建了一个新模块,并尝试获取格式设置的数据。但还没有成功。我只是获取字段的所有设置,但不显示内容类型中字段的设置。

在下图中,我想获取格式列的所有数据,并将其显示为json。请帮我。非常感谢!

field drupal-8
2个回答
2
投票

如果您想提取特定字段的格式化程序设置,可以使用此选项:

/** @var \Drupal\Core\Entity\EntityDisplayRepository $entityDisplayRepository */
$entityDisplayRepository = \Drupal::service('entity_display.repository');
$productViewDisplay = $entityDisplayRepository->getViewDisplay('node', 'page', 'teaser' /* optional */);
$all_formatters_settings = $productViewDisplay->get('content');

$formatter_settings = $all_formatters_settings['field_my_field'];

如果您需要获取小部件的设置,您可以类似地调用存储库中的函数

getFormDisplay()
而不是
getViewDisplay()

/** @var \Drupal\Core\Entity\EntityDisplayRepository $entityDisplayRepository */
$entityDisplayRepository = \Drupal::service('entity_display.repository');
$productViewDisplay = $entityDisplayRepository->getFormDisplay('node', 'page', 'teaser' /* optional */);
$all_formatters_settings = $productViewDisplay->get('content');

$formatter_settings = $all_formatters_settings['field_my_field'];

1
投票

还有另一种方法来获取格式化程序设置。

$formatter_settings = \Drupal::entityTypeManager()
  ->getStorage('entity_view_display')
  ->load("entity_type_id.entity_bundle.view_mode")
  ->getRenderer('field_logo_kataloga')
  ->getSettings();
© www.soinside.com 2019 - 2024. All rights reserved.