function EntityViewTrait::buildEntityView

Same name in other branches
  1. 8.9.x core/tests/Drupal/Tests/EntityViewTrait.php \Drupal\Tests\EntityViewTrait::buildEntityView()
  2. 10 core/tests/Drupal/Tests/EntityViewTrait.php \Drupal\Tests\EntityViewTrait::buildEntityView()
  3. 11.x core/tests/Drupal/Tests/EntityViewTrait.php \Drupal\Tests\EntityViewTrait::buildEntityView()

Builds the renderable view of an entity.

Entities postpone the composition of their renderable arrays to #pre_render functions in order to maximize cache efficacy. This means that the full renderable array for an entity is constructed in \Drupal::service('renderer')->render(). Some tests require the complete renderable array for an entity outside of the render process in order to verify the presence of specific values. This method isolates the steps in the render process that produce an entity's renderable array.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity to prepare a renderable array for.

string $view_mode: (optional) The view mode that should be used to build the entity.

null $langcode: (optional) For which language the entity should be prepared, defaults to the current content language.

Return value

array

See also

\Drupal\Core\Render\RendererInterface::render()

4 calls to EntityViewTrait::buildEntityView()
CommentOrphanTest::testOrphan in core/modules/comment/tests/src/Kernel/CommentOrphanTest.php
Test loading/deleting/rendering orphaned comments.
ImageFieldDefaultImagesTest::testDefaultImages in core/modules/image/tests/src/Functional/ImageFieldDefaultImagesTest.php
Tests CRUD for fields and field storages with default images.
NodeEntityViewModeAlterTest::testNodeViewModeChange in core/modules/node/tests/src/Functional/NodeEntityViewModeAlterTest.php
Create a "Basic page" node and verify its consistency in the database.
SummaryLengthTest::testSummaryLength in core/modules/node/tests/src/Kernel/SummaryLengthTest.php
Tests the node summary length functionality.

File

core/tests/Drupal/Tests/EntityViewTrait.php, line 36

Class

EntityViewTrait
Provides helper methods to deal with building entity views in tests.

Namespace

Drupal\Tests

Code

protected function buildEntityView(EntityInterface $entity, $view_mode = 'full', $langcode = NULL) {
    $ensure_fully_built = function (&$elements) use (&$ensure_fully_built) {
        // If the default values for this element have not been loaded yet, populate
        // them.
        if (isset($elements['#type']) && empty($elements['#defaults_loaded'])) {
            $elements += \Drupal::service('element_info')->getInfo($elements['#type']);
        }
        // Make any final changes to the element before it is rendered. This means
        // that the $element or the children can be altered or corrected before the
        // element is rendered into the final text.
        if (isset($elements['#pre_render'])) {
            foreach ($elements['#pre_render'] as $callable) {
                $elements = call_user_func($callable, $elements);
            }
        }
        // And recurse.
        $children = Element::children($elements, TRUE);
        foreach ($children as $key) {
            $ensure_fully_built($elements[$key]);
        }
    };
    $render_controller = $this->container
        ->get('entity_type.manager')
        ->getViewBuilder($entity->getEntityTypeId());
    $build = $render_controller->view($entity, $view_mode, $langcode);
    $ensure_fully_built($build);
    return $build;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.