Поле адреса представляет собой набор других полей, одним из которых является почтовый_код.
Я написал пользовательское ограничение проверки. Применяется и работает. но сообщение об ошибке отображается для всех полей поля адреса, я просто хочу его для почтового_кода, как это возможно?
Это мой класс 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