Chris@0: 'entity', Chris@0: * '#entity_type' => 'node', Chris@0: * '#entity_id' => 1, Chris@0: * '#view_mode' => 'teaser, Chris@0: * '#langcode' => 'en', Chris@0: * ]; Chris@0: * @endcode Chris@0: * Chris@0: * @RenderElement("entity") Chris@0: */ Chris@0: class Entity extends RenderElement { Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getInfo() { Chris@0: return [ Chris@0: '#pre_render' => [ Chris@0: [get_class($this), 'preRenderEntityElement'], Chris@0: ], Chris@0: '#view_mode' => 'full', Chris@0: '#langcode' => NULL, Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Entity element pre render callback. Chris@0: * Chris@0: * @param array $element Chris@0: * An associative array containing the properties of the entity element. Chris@0: * Chris@0: * @return array Chris@0: * The modified element. Chris@0: */ Chris@0: public static function preRenderEntityElement(array $element) { Chris@0: Chris@0: $entity_type_manager = \Drupal::entityTypeManager(); Chris@0: Chris@0: $entity = $entity_type_manager Chris@0: ->getStorage($element['#entity_type']) Chris@0: ->load($element['#entity_id']); Chris@0: Chris@0: if ($entity && $entity->access('view')) { Chris@0: $element['entity'] = $entity_type_manager Chris@0: ->getViewBuilder($element['#entity_type']) Chris@0: ->view($entity, $element['#view_mode'], $element['#langcode']); Chris@0: } Chris@0: Chris@0: return $element; Chris@0: } Chris@0: Chris@0: }