class DefaultContentSubscriber
Same name in this branch
- 11.x core/modules/media/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\media\EventSubscriber\DefaultContentSubscriber
- 11.x core/modules/layout_builder/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\layout_builder\EventSubscriber\DefaultContentSubscriber
- 11.x core/modules/content_moderation/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\content_moderation\EventSubscriber\DefaultContentSubscriber
- 11.x core/modules/link/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\link\EventSubscriber\DefaultContentSubscriber
- 11.x core/modules/path/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\path\EventSubscriber\DefaultContentSubscriber
- 11.x core/modules/file/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\file\EventSubscriber\DefaultContentSubscriber
Same name and namespace in other branches
- main core/modules/media/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\media\EventSubscriber\DefaultContentSubscriber
- main core/modules/file/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\file\EventSubscriber\DefaultContentSubscriber
- main core/modules/layout_builder/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\layout_builder\EventSubscriber\DefaultContentSubscriber
- main core/modules/content_moderation/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\content_moderation\EventSubscriber\DefaultContentSubscriber
- main core/modules/link/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\link\EventSubscriber\DefaultContentSubscriber
- main core/modules/path/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\path\EventSubscriber\DefaultContentSubscriber
Subscribes to default content-related events.
@internal Event subscribers are internal.
Hierarchy
- class \Drupal\menu_link_content\EventSubscriber\DefaultContentSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
Expanded class hierarchy of DefaultContentSubscriber
1 file declares its use of DefaultContentSubscriber
- DefaultContentTest.php in core/
modules/ menu_link_content/ tests/ src/ Kernel/ DefaultContentTest.php
File
-
core/
modules/ menu_link_content/ src/ EventSubscriber/ DefaultContentSubscriber.php, line 20
Namespace
Drupal\menu_link_content\EventSubscriberView source
final class DefaultContentSubscriber implements EventSubscriberInterface {
public function __construct(private readonly EntityRepositoryInterface $entityRepository, #[AutowireServiceClosure('logger.channel.default_content')] private readonly \Closure $logger) {
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() : array {
return [
PreExportEvent::class => 'preExport',
];
}
/**
* Reacts before an entity is exported.
*
* Adds an export callback to ensure parent menu links are marked as
* dependencies, when exporting menu link content entities.
*
* @param \Drupal\Core\DefaultContent\PreExportEvent $event
* The event object.
*/
public function preExport(PreExportEvent $event) : void {
if (!$event->entity instanceof MenuLinkContentInterface) {
return;
}
$parentId = $event->entity
->getParentId();
if (!str_starts_with($parentId, 'menu_link_content:')) {
return;
}
[, $uuid] = explode(':', $parentId);
$parent = $this->entityRepository
->loadEntityByUuid('menu_link_content', $uuid);
if ($parent instanceof MenuLinkContentInterface) {
$event->metadata
->addDependency($parent);
return;
}
$this->getLogger()
->error("The parent (%parent) of menu link %uuid could not be loaded.", [
'%parent' => $uuid,
'%uuid' => $event->entity
->uuid(),
]);
}
/**
* Gets the logging service.
*
* @return \Psr\Log\LoggerInterface
* The logging service.
*/
private function getLogger() : LoggerInterface {
return ($this->logger)();
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.