protected function WebTestBase::drupalBuildEntityView in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/simpletest/src/WebTestBase.php \Drupal\simpletest\WebTestBase::drupalBuildEntityView()
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_render(). Some tests require the complete renderable array for an entity outside of the drupal_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.
bool $reset: (optional) Whether to clear the cache for this entity.
Return value
array
See also
3 calls to WebTestBase::drupalBuildEntityView()
- ImageFieldDefaultImagesTest::testDefaultImages in core/
modules/ image/ src/ Tests/ ImageFieldDefaultImagesTest.php - Tests CRUD for fields and fields fields with default images.
- NodeEntityViewModeAlterTest::testNodeViewModeChange in core/
modules/ node/ src/ Tests/ NodeEntityViewModeAlterTest.php - Create a "Basic page" node and verify its consistency in the database.
- SummaryLengthTest::testSummaryLength in core/
modules/ node/ src/ Tests/ SummaryLengthTest.php - Tests the node summary length functionality.
File
- core/
modules/ simpletest/ src/ WebTestBase.php, line 359 - Contains \Drupal\simpletest\WebTestBase.
Class
- WebTestBase
- Test case for typical Drupal tests.
Namespace
Drupal\simpletestCode
protected function drupalBuildEntityView(EntityInterface $entity, $view_mode = 'full', $langcode = NULL, $reset = FALSE) {
$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.manager')
->getViewBuilder($entity
->getEntityTypeId());
if ($reset) {
$render_controller
->resetCache(array(
$entity
->id(),
));
}
$build = $render_controller
->view($entity, $view_mode, $langcode);
$ensure_fully_built($build);
return $build;
}