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

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

declare(strict_types=1);

namespace Drupal\sites_group_overrides_paragraphs\EventSubscriber;

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

/**
 * Copy paragraphs on override.
 */
final class FieldOverride implements EventSubscriberInterface {

  /**
   * Copy paragraphs on override.
   *
   * @param \Drupal\sites_group_overrides\Event\FieldOverrideEvent $event
   *   The field override Event.
   */
  public function onFieldOverride(FieldOverrideEvent $event) {
    $entity = $event->getEntity();
    $entity_field_name = $event->getFieldName();
    $value = [];
    if ($entity->get($entity_field_name)->getFieldDefinition()->getType() == 'entity_reference_revisions') {
      /** @var \Drupal\paragraphs\ParagraphInterface[] $paragraphs */
      $paragraphs = $entity->get($entity_field_name)->referencedEntities();
      foreach ($paragraphs as $paragraph) {
        $new_paragraph = $paragraph->createDuplicate();
        $new_paragraph->save();
        $value[] = $new_paragraph;
      }

      $event->setValue($value);
    }
  }

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

}

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

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