Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / chi-teck / drupal-code-generator / templates / d8 / render-element.twig
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/render-element.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/render-element.twig
new file mode 100644 (file)
index 0000000..66c2856
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+namespace Drupal\{{ machine_name }}\Element;
+
+use Drupal\Core\Render\Element\RenderElement;
+
+/**
+ * Provides a render element to display an entity.
+ *
+ * Properties:
+ * - #entity_type: The entity type.
+ * - #entity_id: The entity ID.
+ * - #view_mode: The view mode that should be used to render the entity.
+ * - #langcode: For which language the entity should be rendered.
+ *
+ * Usage Example:
+ * @code
+ * $build['node'] = [
+ *   '#type' => 'entity',
+ *   '#entity_type' => 'node',
+ *   '#entity_id' => 1,
+ *   '#view_mode' => 'teaser,
+ *   '#langcode' => 'en',
+ * ];
+ * @endcode
+ *
+ * @RenderElement("entity")
+ */
+class Entity extends RenderElement {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getInfo() {
+    return [
+      '#pre_render' => [
+        [get_class($this), 'preRenderEntityElement'],
+      ],
+      '#view_mode' => 'full',
+      '#langcode' => NULL,
+    ];
+  }
+
+  /**
+   * Entity element pre render callback.
+   *
+   * @param array $element
+   *   An associative array containing the properties of the entity element.
+   *
+   * @return array
+   *   The modified element.
+   */
+  public static function preRenderEntityElement(array $element) {
+
+    $entity_type_manager = \Drupal::entityTypeManager();
+
+    $entity = $entity_type_manager
+      ->getStorage($element['#entity_type'])
+      ->load($element['#entity_id']);
+
+    if ($entity && $entity->access('view')) {
+      $element['entity'] = $entity_type_manager
+        ->getViewBuilder($element['#entity_type'])
+        ->view($entity, $element['#view_mode'], $element['#langcode']);
+    }
+
+    return $element;
+  }
+
+}