Pull merge.
[yaffs-website] / vendor / chi-teck / drupal-code-generator / templates / d8 / render-element.twig
1 <?php
2
3 namespace Drupal\{{ machine_name }}\Element;
4
5 use Drupal\Core\Render\Element\RenderElement;
6
7 /**
8  * Provides a render element to display an entity.
9  *
10  * Properties:
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.
15  *
16  * Usage Example:
17  * @code
18  * $build['node'] = [
19  *   '#type' => 'entity',
20  *   '#entity_type' => 'node',
21  *   '#entity_id' => 1,
22  *   '#view_mode' => 'teaser,
23  *   '#langcode' => 'en',
24  * ];
25  * @endcode
26  *
27  * @RenderElement("entity")
28  */
29 class Entity extends RenderElement {
30
31   /**
32    * {@inheritdoc}
33    */
34   public function getInfo() {
35     return [
36       '#pre_render' => [
37         [get_class($this), 'preRenderEntityElement'],
38       ],
39       '#view_mode' => 'full',
40       '#langcode' => NULL,
41     ];
42   }
43
44   /**
45    * Entity element pre render callback.
46    *
47    * @param array $element
48    *   An associative array containing the properties of the entity element.
49    *
50    * @return array
51    *   The modified element.
52    */
53   public static function preRenderEntityElement(array $element) {
54
55     $entity_type_manager = \Drupal::entityTypeManager();
56
57     $entity = $entity_type_manager
58       ->getStorage($element['#entity_type'])
59       ->load($element['#entity_id']);
60
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']);
65     }
66
67     return $element;
68   }
69
70 }