3 namespace Drupal\{{ machine_name }}\Element;
5 use Drupal\Core\Render\Element\RenderElement;
8 * Provides a render element to display an entity.
11 * - #entity_type: The entity type.
12 * - #entity_id: The entity ID.
13 * - #view_mode: The view mode that should be used to render the entity.
14 * - #langcode: For which language the entity should be rendered.
19 * '#type' => 'entity',
20 * '#entity_type' => 'node',
22 * '#view_mode' => 'teaser,
23 * '#langcode' => 'en',
27 * @RenderElement("entity")
29 class Entity extends RenderElement {
34 public function getInfo() {
37 [get_class($this), 'preRenderEntityElement'],
39 '#view_mode' => 'full',
45 * Entity element pre render callback.
47 * @param array $element
48 * An associative array containing the properties of the entity element.
51 * The modified element.
53 public static function preRenderEntityElement(array $element) {
55 $entity_type_manager = \Drupal::entityTypeManager();
57 $entity = $entity_type_manager
58 ->getStorage($element['#entity_type'])
59 ->load($element['#entity_id']);
61 if ($entity && $entity->access('view')) {
62 $element['entity'] = $entity_type_manager
63 ->getViewBuilder($element['#entity_type'])
64 ->view($entity, $element['#view_mode'], $element['#langcode']);