Рейтинг:0

Как установить нарушение в поле postal_code в полях адреса

флаг ye

Поле адреса представляет собой набор других полей, одним из которых является почтовый_код. Я написал пользовательское ограничение проверки. Применяется и работает. но сообщение об ошибке отображается для всех полей поля адреса, я просто хочу его для почтового_кода, как это возможно?

Это мой класс ZipCodeValueValidator

<?php

пространство имен Drupal\zip_code_lookup\Plugin\Validation\Constraint;

используйте Symfony\Component\Validator\Constraint;
используйте Symfony\Component\Validator\ConstraintValidator;

/**
 * Проверяет ограничение почтового индекса.
 */
класс ZipCodeValueValidator расширяет ConstraintValidator
{

  /**
   * {@inheritdoc}
   */
  проверка публичной функции ($items, ограничение $constraint)
  {
    foreach ($items as $item) {
      если ($this->validateZip($item)) {
        $errorMessage = "Это новое сообщение об ошибке, которое я написал.";
        $this->context->buildViolation($errorMessage)
        ->atPath('field_billing.postal_code')
        ->добавитьнарушение();
      }
    }
  }


  приватная функция validateZip($value)
  {
    вернуть ИСТИНА;
  }
}

И вот я установил его в поле

<?php

используйте Drupal\Core\Entity\EntityTypeInterface;
/**
 * Реализует hook_entity_bundle_field_info_alter().
 */
функция zip_code_lookup_entity_bundle_field_info_alter(&$fields, EntityTypeInterface $entity_type, $bundle)
{
    если ($entity_type->id() === 'группа') {
        если ($bundle == 'подписчик') {
            если (isset($fields['field_billing'])) {
                $fields['field_billing']->addConstraint('ZipCode', []);
            }
        }
    }
}

https://www.drupal.org/docs/drupal-apis/entity-api/entity-validation-api/providing-a-custom-validation-constraint

введите описание изображения здесь

Razeem Ahmad avatar
флаг ru
Из вашего сообщения я понимаю, что вы указываете поле field_billing, в которое входят все поля в объекте адреса. Вместо этого для добавления ограничения необходимо использовать zip_code в адресной сущности.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.