auto_entitylabel-8.x-3.x-dev/src/Plugin/Validation/EntityLabelNotNullConstraintValidator.php

src/Plugin/Validation/EntityLabelNotNullConstraintValidator.php
<?php

namespace Drupal\auto_entitylabel\Plugin\Validation;

use Drupal\auto_entitylabel\EntityDecorator;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Field\FieldItemList;
use Drupal\Core\Validation\Plugin\Validation\Constraint\NotNullConstraintValidator;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Validator\Constraint;

/**
 * EntityLabelNotNull constraint validator.
 *
 * Custom override of NotNull constraint to allow empty entity labels to
 * validate before the automatic label is set.
 */
class EntityLabelNotNullConstraintValidator extends NotNullConstraintValidator implements ContainerInjectionInterface {

  /**
   * The entity decorator service.
   *
   * @var \Drupal\auto_entitylabel\EntityDecorator
   */
  protected $entityDecorator;

  /**
   * Creates an EntityLabelNotNullConstraintValidator object.
   *
   * @param \Drupal\auto_entitylabel\EntityDecorator $entityDecorator
   *   The entity decorator service.
   */
  public function __construct(EntityDecorator $entityDecorator) {
    $this->entityDecorator = $entityDecorator;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static($container->get('auto_entitylabel.entity_decorator'));
  }

  /**
   * {@inheritdoc}
   */
  public function validate($value, Constraint $constraint): void {
    $typed_data = $this->getTypedData();
    if ($typed_data instanceof FieldItemList && $typed_data->isEmpty()) {
      $entity = $typed_data->getEntity();
      /** @var \Drupal\auto_entitylabel\AutoEntityLabelManager $decorated_entity */
      $decorated_entity = $this->entityDecorator->decorate($entity);
      if ($decorated_entity->hasLabel()
        && $decorated_entity->autoLabelNeeded()
        && $value->getFieldDefinition()->getName() == $decorated_entity->getLabelName()
      ) {
        return;
      }
    }

    parent::validate($value, $constraint);
  }

}

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

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