function DefaultContentSubscriber::preExport

Same name in this branch
  1. 11.x core/modules/media/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\media\EventSubscriber\DefaultContentSubscriber::preExport()
  2. 11.x core/modules/content_moderation/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\content_moderation\EventSubscriber\DefaultContentSubscriber::preExport()
  3. 11.x core/modules/link/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\link\EventSubscriber\DefaultContentSubscriber::preExport()
  4. 11.x core/modules/path/src/EventSubscriber/DefaultContentSubscriber.php \Drupal\path\EventSubscriber\DefaultContentSubscriber::preExport()

Reacts before an entity is exported.

Adds an export callback for `layout_section` field items to ensure that any referenced block content entities are marked as dependencies of the entity being exported.

Parameters

\Drupal\Core\DefaultContent\PreExportEvent $event: The event object.

File

core/modules/layout_builder/src/EventSubscriber/DefaultContentSubscriber.php, line 44

Class

DefaultContentSubscriber
Subscribes to default content-related events.

Namespace

Drupal\layout_builder\EventSubscriber

Code

public function preExport(PreExportEvent $event) : void {
  $event->setCallback('field_item:layout_section', function (LayoutSectionItem $item, ExportMetadata $metadata) : array {
    $section = $item->get('section')
      ->getValue();
    assert($section instanceof Section);
    foreach ($section->getComponents() as $component) {
      $plugin = $component->getPlugin();
      if ($plugin instanceof DerivativeInspectionInterface && $plugin->getBaseId() === 'block_content') {
        $block_content = $this->entityRepository
          ->loadEntityByUuid('block_content', $plugin->getDerivativeId());
        if ($block_content) {
          $metadata->addDependency($block_content);
        }
      }
    }
    return [
      'section' => $section->toArray(),
    ];
  });
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.