我有一个 drupal 8 项目,客户要求我获取内容类型中字段的格式设置,以响应移动应用程序的 api。我创建了一个新模块,并尝试获取格式设置的数据。但还没有成功。我只是获取字段的所有设置,但不显示内容类型中字段的设置。
如果您想提取特定字段的格式化程序设置,可以使用此选项:
/** @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'];
还有另一种方法来获取格式化程序设置。
$formatter_settings = \Drupal::entityTypeManager()
->getStorage('entity_view_display')
->load("entity_type_id.entity_bundle.view_mode")
->getRenderer('field_logo_kataloga')
->getSettings();