Trường địa chỉ là tập hợp các trường khác mà một trong số đó là mã bưu chính.
Tôi đã viết một ràng buộc xác thực tùy chỉnh. Nó được áp dụng và làm việc. nhưng thông báo lỗi hiển thị cho tất cả các trường của trường Địa chỉ, tôi chỉ muốn nó cho Postal_code, làm sao có thể?
Đây là lớp ZipCodeValueValidator của tôi
<?php
không gian tên Drupal\zip_code_lookup\Plugin\Validation\Constraint;
sử dụng Symfony\Component\Validator\Constraint;
sử dụng Symfony\Thành phần\Validator\ConstraintValidator;
/**
* Xác thực ràng buộc Mã Zip.
*/
lớp ZipCodeValueValidator mở rộng ConstraintValidator
{
/**
* {@inheritdoc}
*/
xác thực hàm công khai ($items, Ràng buộc $constraint)
{
foreach ($items as $item) {
if ($this->validateZip($item)) {
$errorMessage = "Đây là thông báo lỗi mới do tôi viết.";
$this->context->buildViolation($errorMessage)
->atPath('field_billing.postal_code')
->addViolation();
}
}
}
hàm riêng validateZip($value)
{
trả về ĐÚNG;
}
}
Và ở đây tôi đặt nó vào trường
<?php
sử dụng Drupal\Core\Entity\EntityTypeInterface;
/**
* Triển khai hook_entity_bundle_field_info_alter().
*/
hàm zip_code_lookup_entity_bundle_field_info_alter(&$fields, EntityTypeInterface $entity_type, $bundle)
{
if ($entity_type->id() === 'nhóm') {
if ($bundle == 'thuê bao') {
if (isset($fields['field_billing'])) {
$fields['field_billing']->addConstraint('Mã Zip', []);
}
}
}
}
https://www.drupal.org/docs/drupal-apis/entity-api/entity-validation-api/providing-a-custom-validation-constraint