{% extends "base/class.php.twig" %} {% block file_path %} \Drupal\{{ module }}\Plugin\Validation\Constraint\{{ class_name }}. {% endblock %} {% block namespace_class %} namespace Drupal\{{ module }}\Plugin\Validation\Constraint; {% endblock %} {% block use_class %} use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; {% endblock %} {% block class_declaration %} /** * Validates the UniqueInteger constraint. */ class {{ class_name }}Validator extends ConstraintValidator {% endblock %} {% block class_methods %} /** * {@inheritdoc} */ public function validate($items, Constraint $constraint) { foreach ($items as $item) { // First check if the value is not empty. if (empty($item->value)) { // The value is empty, so a violation, aka error, is applied. // The type of violation applied comes from the constraint description // in step 1. $this->context->addViolation($constraint->isEmpty, ['%value' => $item->value]); } // Next check if the value is unique. if (!$this->isUnique($item->value)) { $this->context->addViolation($constraint->notUnique, ['%value' => $item->value]); } } } private function isUnique($value) { // Here is where the check for a unique value would happen. } {% endblock %}