ช่องที่อยู่คือชุดของช่องอื่นๆ ซึ่งหนึ่งในนั้นคือ postal_code
ฉันเขียนข้อ จำกัด การตรวจสอบที่กำหนดเอง มันถูกนำไปใช้และทำงาน แต่ข้อความแสดงข้อผิดพลาดแสดงสำหรับทุกฟิลด์ของฟิลด์ที่อยู่ ฉันแค่ต้องการให้เป็น Postal_code เป็นไปได้อย่างไร
นี่คือคลาส ZipCodeValueValidator ของฉัน
<?php
เนมสเปซ Drupal\zip_code_lookup\Plugin\Validation\Constraint;
ใช้ Symfony\Component\Validator\Constraint;
ใช้ Symfony\Component\Validator\ConstraintValidator
/**
* ตรวจสอบข้อ จำกัด รหัสไปรษณีย์
*/
คลาส ZipCodeValueValidator ขยาย ConstraintValidator
{
/**
* {@inheritdoc}
*/
ตรวจสอบฟังก์ชั่นสาธารณะ ($ รายการ, ข้อ จำกัด $ ข้อ จำกัด )
{
foreach ($ รายการเป็น $ รายการ) {
ถ้า ($this->validateZip($item)) {
$errorMessage = "นี่คือข้อความแสดงข้อผิดพลาดใหม่ที่ฉันเขียน";
$this->context->buildViolation($errorMessage)
->atPath('field_billing.postal_code')
->เพิ่มการละเมิด ();
}
}
}
ฟังก์ชันส่วนตัว validateZip($value)
{
กลับ TRUE;
}
}
และที่นี่ฉันตั้งไว้ที่สนาม
<?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() === 'กลุ่ม') {
ถ้า ($ มัด == 'สมาชิก') {
ถ้า (isset($fields['field_billing'])) {
$fields['field_billing']->addConstraint('รหัสไปรษณีย์', []);
}
}
}
}
https://www.drupal.org/docs/drupal-apis/entity-api/entity-validation-api/providing-a-custom-validation-constraint