function entity_class_formatter_entity_view_alter in Entity Class Formatter 8
Implements hook_entity_view_alter().
File
- ./
entity_class_formatter.module, line 19 - Entity Class Formatter module.
Code
function entity_class_formatter_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
// Skip entities which are not holding fields.
if (!$entity instanceof FieldableEntityInterface) {
return;
}
$fields = [];
// Get fields configured by Layout Builder.
if ($display instanceof LayoutEntityDisplayInterface && $display
->isLayoutBuilderEnabled()) {
foreach ($display
->getSections() as $section) {
foreach ($section
->getComponents() as $component) {
$config = $component
->get('configuration');
// Only if Entity Class formatter is used.
if (isset($config['id']) && isset($config['formatter']['type'])) {
$formatter = $config['formatter'];
if ($formatter['type'] === 'entity_class_formatter') {
// Extract field name from the component ID.
[
,
,
,
$name,
] = explode(':', $config['id']);
if (!empty($name)) {
$fields[$name][] = !empty($formatter['settings']) ? $formatter['settings'] : [];
}
}
}
}
}
}
else {
foreach ($display
->getComponents() as $name => $component) {
// Only if Entity Class formatter is used.
if (isset($component['type']) && $component['type'] === 'entity_class_formatter') {
$fields[$name][] = !empty($component['settings']) ? $component['settings'] : [];
}
}
}
// Process all discovered fields.
foreach ($fields as $name => $settings_set) {
if (!$entity
->hasField($name)) {
continue;
}
$field = $entity
->get($name);
// Apply settings of every field instance.
foreach ($settings_set as $settings) {
_entity_class_formatter_apply($build, $field, $settings);
}
}
}