sites_group_overrides-1.x-dev/modules/sites_group_overrides_paragraphs/src/EventSubscriber/SyncParagraphField.php

modules/sites_group_overrides_paragraphs/src/EventSubscriber/SyncParagraphField.php
<?php

declare(strict_types=1);

namespace Drupal\sites_group_overrides_paragraphs\EventSubscriber;

use Drupal\sites_group_overrides\Event\SyncFieldToEntity;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Pretend that paragraph overrides belong to the original entity.
 */
final class SyncParagraphField implements EventSubscriberInterface {

  /**
   * Set the parent of the entity to the entity instead of the relationship.
   *
   * @param \Drupal\sites_group_overrides\Event\SyncFieldToEntity $event
   *   The sync to entity event.
   */
  public function onSync(SyncFieldToEntity $event) {
    if ($event->getEntity()->get($event->getFieldName())->getFieldDefinition()->getType() != 'entity_reference_revisions') {
      return;
    }
    foreach ($event->getEntity()->get($event->getFieldName())->referencedEntities() as $paragraph) {
      $paragraph->parent_type = $event->getEntity()->getEntityTypeId();
      $paragraph->parent_id = $event->getEntity()->id();
    }

  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents(): array {
    return [
      SyncFieldToEntity::EVENT_NAME => ['onSync'],
    ];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc