eca-1.0.x-dev/modules/render/src/Event/EcaRenderContextualLinksEvent.php
modules/render/src/Event/EcaRenderContextualLinksEvent.php
<?php
namespace Drupal\eca_render\Event;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\eca\Event\EntityApplianceTrait;
/**
* Dispatched when contextual links are being rendered.
*
* @internal
* This class is not meant to be used as a public API. It is subject for name
* change or may be removed completely, also on minor version updates.
*
* @package Drupal\eca_render\Event
*/
class EcaRenderContextualLinksEvent extends EcaRenderEventBase {
use EntityApplianceTrait;
/**
* The current links array.
*
* @var array
*/
protected array $links;
/**
* The link group.
*
* @var string
*/
protected string $group;
/**
* The route parameters.
*
* @var array
*/
protected array $routeParameters;
/**
* The render array build.
*
* @var array
*/
protected array $build;
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected EntityTypeManagerInterface $entityTypeManager;
/**
* Constructs a new EcaRenderContextualLinksEvent object.
*
* @param array &$links
* The current links array.
* @param string $group
* The link group.
* @param array $route_parameters
* The route parameters.
* @param array &$build
* The render array build.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
*/
public function __construct(array &$links, string $group, array $route_parameters, array &$build, EntityTypeManagerInterface $entity_type_manager) {
$this->links = &$links;
$this->group = $group;
$this->routeParameters = $route_parameters;
$this->build = &$build;
$this->entityTypeManager = $entity_type_manager;
}
/**
* {@inheritdoc}
*/
public function &getRenderArray(): array {
return $this->build;
}
/**
* Get the current links array.
*
* @return array
* The links array.
*/
public function &getLinks(): array {
return $this->links;
}
/**
* Get the link group.
*
* @return string
* The link group.
*/
public function getGroup(): string {
return $this->group;
}
/**
* Get the route parameters.
*
* @return array
* The route parameters.
*/
public function getRouteParameters(): array {
return $this->routeParameters;
}
/**
* Get the entity, if available.
*
* @return \Drupal\Core\Entity\EntityInterface|null
* The entity, or NULL if not available.
*/
public function getEntity(): ?EntityInterface {
foreach ($this->routeParameters as $k => $v) {
if (is_string($k) && is_scalar($v) && $this->entityTypeManager->hasDefinition($k) && ($entity = $this->entityTypeManager->getStorage($k)->load($v))) {
return $entity;
}
}
return NULL;
}
}
