3 namespace Drupal\entity_browser\Plugin\EntityBrowser\FieldWidgetDisplay;
5 use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
6 use Drupal\Core\Entity\EntityInterface;
7 use Drupal\Core\Entity\EntityTypeManagerInterface;
8 use Drupal\Core\Form\FormStateInterface;
9 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
10 use Symfony\Component\DependencyInjection\ContainerInterface;
11 use Drupal\entity_browser\FieldWidgetDisplayBase;
14 * Displays the fully rendered entity.
16 * @EntityBrowserFieldWidgetDisplay(
17 * id = "rendered_entity",
18 * label = @Translation("Rendered entity"),
19 * description = @Translation("Displays fully rendered entity.")
22 class RenderedEntity extends FieldWidgetDisplayBase implements ContainerFactoryPluginInterface {
25 * Entity manager service.
27 * @var \Drupal\Core\Entity\EntityTypeManagerInterface
29 protected $entityTypeManager;
32 * Entity display repository.
34 * @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface
36 protected $entityDisplayRepository;
39 * Constructs widget plugin.
41 * @param array $configuration
42 * A configuration array containing information about the plugin instance.
43 * @param string $plugin_id
44 * The plugin_id for the plugin instance.
45 * @param mixed $plugin_definition
46 * The plugin implementation definition.
47 * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
48 * Entity type manager service.
49 * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
50 * Entity display repository service.
52 public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository) {
53 parent::__construct($configuration, $plugin_id, $plugin_definition);
54 $this->entityTypeManager = $entity_type_manager;
55 $this->entityDisplayRepository = $entity_display_repository;
61 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
66 $container->get('entity_type.manager'),
67 $container->get('entity_display.repository')
74 public function view(EntityInterface $entity) {
75 return $this->entityTypeManager->getViewBuilder($this->configuration['entity_type'])->view($entity, $this->configuration['view_mode']);
81 public function settingsForm(array $form, FormStateInterface $form_state) {
83 foreach ($this->entityDisplayRepository->getViewModeOptions($this->configuration['entity_type']) as $id => $view_mode_label) {
84 $options[$id] = $view_mode_label;
90 '#title' => $this->t('View mode'),
91 '#description' => $this->t('Select view mode to be used when rendering entities.'),
92 '#default_value' => $this->configuration['view_mode'],
93 '#options' => $options,
101 public function defaultConfiguration() {
103 'view_mode' => 'default',
104 ] + parent::defaultConfiguration();
110 public function calculateDependencies() {
111 $dependencies = parent::calculateDependencies();
112 if ($view_mode = $this->entityTypeManager->getStorage('entity_view_mode')->load($this->configuration['entity_type'] . '.' . $this->configuration['view_mode'])) {
113 $dependencies[$view_mode->getConfigDependencyKey()][] = $view_mode->getConfigDependencyName();
115 return $dependencies;