diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php index 90c6888..4380065 100644 --- a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php +++ b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php @@ -84,7 +84,7 @@ public static function createInstance(ContainerInterface $container, EntityTypeI * {@inheritdoc} */ public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) { - field_attach_prepare_view($this->entityType, $entities, $displays, $langcode); + $this->prepareFormatters($entities, $displays); // Initialize the field item attributes for the fields set to be displayed. foreach ($entities as $entity) { @@ -307,7 +307,9 @@ public function prepareFormatters(array $entities, array $displays) { if ($formatter = $display->getRenderer($field_name)) { $entities_items = array(); foreach ($bundle_entities as $id => $entity) { - $entities_items[$id] = $entity->get($field_name); + $items = $entity->get($field_name); + $items->filterEmptyValues(); + $entities_items[$id] = $items; } $formatter->prepareView($entities_items); } @@ -340,6 +342,7 @@ public function attachFormatters(EntityInterface $entity, EntityViewDisplayInter foreach ($entity as $field_name => $items) { if ($formatter = $display->getRenderer($field_name)) { + $items->filterEmptyValues(); $build += $formatter->view($items); } } diff --git a/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php b/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php index 86e723c..02fff37 100644 --- a/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php @@ -143,7 +143,7 @@ function testFieldViewField() { $setting = $display['settings']['test_formatter_setting_multiple']; $this->assertNoText($this->label, 'Label was not displayed.'); $this->assertText('field_test_field_attach_view_alter', 'Alter fired, display passed.'); - $this->assertText('field language is ' . Language::LANGCODE_NOT_SPECIFIED, 'Language is placed onto the context.'); + $this->assertText('entity language is ' . Language::LANGCODE_NOT_SPECIFIED, 'Language is placed onto the context.'); $array = array(); foreach ($this->values as $delta => $value) { $array[] = $delta . ':' . $value['value'];