commerce-8.x-2.8/modules/product/src/Plugin/Validation/Constraint/ProductVariationSkuConstraintValidator.php
modules/product/src/Plugin/Validation/Constraint/ProductVariationSkuConstraintValidator.php
<?php
namespace Drupal\commerce_product\Plugin\Validation\Constraint;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* Validates the ProductVariationSku constraint.
*/
class ProductVariationSkuConstraintValidator extends ConstraintValidator {
/**
* {@inheritdoc}
*/
public function validate($items, Constraint $constraint) {
if (!$item = $items->first()) {
return;
}
$sku = $item->value;
if (isset($sku) && $sku !== '') {
$sku_exists = (bool) \Drupal::entityQuery('commerce_product_variation')
->condition('sku', $sku)
->condition('variation_id', (int) $items->getEntity()->id(), '<>')
->range(0, 1)
->count()
->execute();
if ($sku_exists) {
$this->context->buildViolation($constraint->message)
->setParameter('%sku', $this->formatValue($sku))
->addViolation();
}
}
}
}
