class EntityViewController in Drupal 8
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Entity/Controller/EntityViewController.php \Drupal\Core\Entity\Controller\EntityViewController
- 10 core/lib/Drupal/Core/Entity/Controller/EntityViewController.php \Drupal\Core\Entity\Controller\EntityViewController
Defines a generic controller to render a single entity.
Hierarchy
- class \Drupal\Core\Entity\Controller\EntityViewController implements ContainerInjectionInterface, TrustedCallbackInterface uses DeprecatedServicePropertyTrait
Expanded class hierarchy of EntityViewController
2 files declare their use of EntityViewController
- NodePreviewController.php in core/
modules/ node/ src/ Controller/ NodePreviewController.php - NodeViewController.php in core/
modules/ node/ src/ Controller/ NodeViewController.php
File
- core/
lib/ Drupal/ Core/ Entity/ Controller/ EntityViewController.php, line 17
Namespace
Drupal\Core\Entity\ControllerView source
class EntityViewController implements ContainerInjectionInterface, TrustedCallbackInterface {
use DeprecatedServicePropertyTrait;
/**
* {@inheritdoc}
*/
protected $deprecatedProperties = [
'entityManager' => 'entity.manager',
];
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The renderer service.
*
* @var \Drupal\Core\Render\RendererInterface
*/
protected $renderer;
/**
* Creates an EntityViewController object.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
* @param \Drupal\Core\Render\RendererInterface $renderer
* The renderer service.
*/
public function __construct(EntityTypeManagerInterface $entity_type_manager, RendererInterface $renderer) {
$this->entityTypeManager = $entity_type_manager;
$this->renderer = $renderer;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('entity_type.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\Core\Render\RendererInterface::render().
*/
public function view(EntityInterface $_entity, $view_mode = 'full') {
$page = $this->entityTypeManager
->getViewBuilder($_entity
->getEntityTypeId())
->view($_entity, $view_mode);
$page['#pre_render'][] = [
$this,
'buildTitle',
];
$page['#entity_type'] = $_entity
->getEntityTypeId();
$page['#' . $page['#entity_type']] = $_entity;
return $page;
}
/**
* {@inheritdoc}
*/
public static function trustedCallbacks() {
return [
'buildTitle',
];
}
/**
* Provides a page to render a single entity revision.
*
* @param \Drupal\Core\Entity\EntityInterface $_entity_revision
* The Entity to be rendered. Note this variable is named $_entity_revision
* 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.
*/
public function viewRevision(EntityInterface $_entity_revision, $view_mode = 'full') {
return $this
->view($_entity_revision, $view_mode);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DeprecatedServicePropertyTrait:: |
public | function | Allows to access deprecated/removed properties. | |
EntityViewController:: |
protected | property | ||
EntityViewController:: |
protected | property | The entity type manager. | |
EntityViewController:: |
protected | property | The renderer service. | |
EntityViewController:: |
public | function | Pre-render callback to build the page title. | |
EntityViewController:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
2 |
EntityViewController:: |
public static | function |
Lists the trusted callbacks provided by the implementing class. Overrides TrustedCallbackInterface:: |
|
EntityViewController:: |
public | function | Provides a page to render a single entity. | 2 |
EntityViewController:: |
public | function | Provides a page to render a single entity revision. | |
EntityViewController:: |
public | function | Creates an EntityViewController object. | 2 |
TrustedCallbackInterface:: |
constant | Untrusted callbacks throw exceptions. | ||
TrustedCallbackInterface:: |
constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. | ||
TrustedCallbackInterface:: |
constant | Untrusted callbacks trigger E_USER_WARNING errors. |