Puncte:0

Cum setați încălcarea la câmpul cod_poștal din Câmpurile de adresă

drapel ye

Câmpul de adresă este o colecție de alte câmpuri, unul dintre ele este cod_poștal. Am scris o constrângere de validare personalizată. Se aplică și funcționează. dar mesajul de eroare se afișează pentru toate câmpurile câmpului Adresă, îl vreau doar pentru Cod_poștal, cum este posibil?

Aceasta este clasa mea ZipCodeValueValidator

<?php

spațiu de nume Drupal\zip_code_lookup\Plugin\Validation\Constraint;

utilizați Symfony\Component\Validator\Constraint;
utilizați Symfony\Component\Validator\ConstraintValidator;

/**
 * Validează constrângerea codului poștal.
 */
clasa ZipCodeValueValidator extinde ConstraintValidator
{

  /**
   * {@inheritdoc}
   */
  validare funcție publică($articole, Constrângere $constrângere)
  {
    foreach ($articole ca $item) {
      if ($this->validateZip($item)) {
        $errorMessage = "Acesta este noul mesaj de eroare pe care l-am scris.";
        $this->context->buildViolation($errorMessage)
        ->atPath('field_billing.postal_code')
        ->addViolation();
      }
    }
  }


  funcția privată validateZip($value)
  {
    returnează TRUE;
  }
}

Și aici am pus-o pe teren

<?php

utilizați Drupal\Core\Entity\EntityTypeInterface;
/**
 * Implementează hook_entity_bundle_field_info_alter().
 */
funcția zip_code_lookup_entity_bundle_field_info_alter(&$fields, EntityTypeInterface $entity_type, $bundle)
{
    if ($entity_type->id() === 'grup') {
        dacă ($bundle == „abonat”) {
            dacă (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

introduceți descrierea imaginii aici

Razeem Ahmad avatar
drapel ru
Ceea ce înțeleg din postarea dvs. este că specificați câmpul field_billing în care apar toate câmpurile din entitatea de adresă. În schimb, pentru dvs. codul poștal din entitatea Address trebuie utilizat pentru adăugarea constrângerii

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.