Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 26 |
| EntityViewController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
42 | |
0.00% |
0 / 26 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
| buildTitle | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 10 |
|||
| view | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Entity\Controller\EntityViewController. | |
| */ | |
| namespace Drupal\Core\Entity\Controller; | |
| use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | |
| use Drupal\Core\Entity\EntityInterface; | |
| use Drupal\Core\Entity\FieldableEntityInterface; | |
| use Drupal\Core\Entity\EntityManagerInterface; | |
| use Drupal\Core\Render\RendererInterface; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Defines a generic controller to render a single entity. | |
| */ | |
| class EntityViewController implements ContainerInjectionInterface { | |
| /** | |
| * The entity manager | |
| * | |
| * @var \Drupal\Core\Entity\EntityManagerInterface | |
| */ | |
| protected $entityManager; | |
| /** | |
| * The renderer service. | |
| * | |
| * @var \Drupal\Core\Render\RendererInterface | |
| */ | |
| protected $renderer; | |
| /** | |
| * Creates an EntityViewController object. | |
| * | |
| * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
| * The entity manager. | |
| * @param \Drupal\Core\Render\RendererInterface $renderer | |
| * The renderer service. | |
| */ | |
| public function __construct(EntityManagerInterface $entity_manager, RendererInterface $renderer) { | |
| $this->entityManager = $entity_manager; | |
| $this->renderer = $renderer; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| return new static( | |
| $container->get('entity.manager'), | |
| $container->get('renderer') | |
| ); | |
| } | |
| /** | |
| * Pre-render callback to build the page title. | |
| * | |
| * @param array $page | |
| * A page render array. | |
| * | |
| * @return array | |
| * The changed page render array. | |
| */ | |
| public function buildTitle(array $page) { | |
| $entity_type = $page['#entity_type']; | |
| $entity = $page['#' . $entity_type]; | |
| // If the entity's label is rendered using a field formatter, set the | |
| // rendered title field formatter as the page title instead of the default | |
| // plain text title. This allows attributes set on the field to propagate | |
| // correctly (e.g. RDFa, in-place editing). | |
| if ($entity instanceof FieldableEntityInterface) { | |
| $label_field = $entity->getEntityType()->getKey('label'); | |
| if (isset($page[$label_field])) { | |
| $page['#title'] = $this->renderer->render($page[$label_field]); | |
| } | |
| } | |
| return $page; | |
| } | |
| /** | |
| * Provides a page to render a single entity. | |
| * | |
| * @param \Drupal\Core\Entity\EntityInterface $_entity | |
| * The Entity to be rendered. Note this variable is named $_entity rather | |
| * than $entity to prevent collisions with other named placeholders in the | |
| * route. | |
| * @param string $view_mode | |
| * (optional) The view mode that should be used to display the entity. | |
| * Defaults to 'full'. | |
| * | |
| * @return array | |
| * A render array as expected by drupal_render(). | |
| */ | |
| public function view(EntityInterface $_entity, $view_mode = 'full') { | |
| $page = $this->entityManager | |
| ->getViewBuilder($_entity->getEntityTypeId()) | |
| ->view($_entity, $view_mode); | |
| $page['#pre_render'][] = [$this, 'buildTitle']; | |
| $page['#entity_type'] = $_entity->getEntityTypeId(); | |
| $page['#' . $page['#entity_type']] = $_entity; | |
| return $page; | |
| } | |
| } |