entityTypeManager = $entity_type_manager; $this->entityDisplayRepository = $entity_display_repository; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('entity_type.manager'), $container->get('entity_display.repository') ); } /** * {@inheritdoc} */ public function view(EntityInterface $entity) { return $this->entityTypeManager->getViewBuilder($this->configuration['entity_type'])->view($entity, $this->configuration['view_mode']); } /** * {@inheritdoc} */ public function settingsForm(array $form, FormStateInterface $form_state) { $options = []; foreach ($this->entityDisplayRepository->getViewModeOptions($this->configuration['entity_type']) as $id => $view_mode_label) { $options[$id] = $view_mode_label; } return [ 'view_mode' => [ '#type' => 'select', '#title' => $this->t('View mode'), '#description' => $this->t('Select view mode to be used when rendering entities.'), '#default_value' => $this->configuration['view_mode'], '#options' => $options, ], ]; } /** * {@inheritdoc} */ public function defaultConfiguration() { return [ 'view_mode' => 'default', ] + parent::defaultConfiguration(); } /** * {@inheritdoc} */ public function calculateDependencies() { $dependencies = parent::calculateDependencies(); if ($view_mode = $this->entityTypeManager->getStorage('entity_view_mode')->load($this->configuration['entity_type'] . '.' . $this->configuration['view_mode'])) { $dependencies[$view_mode->getConfigDependencyKey()][] = $view_mode->getConfigDependencyName(); } return $dependencies; } }