Я пытаюсь создать объект адреса с почтовым кодом, утвержденным на основе данной страны. Способ перехода - это, очевидно, CallbackValidator. На данный момент у меня есть этот код:Symfony/Validator: проверка свойства в обратном вызове
use SLLH\IsoCodesValidator\Constraints\ZipCode;
use Symfony\Component\Validator\Constraints\Callback;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
class Address
{
/**
* @Callback()
*/
public function validatePostalCode(ExecutionContextInterface $context)
{
$constraint = new ZipCode([ 'country' => $this->country ]);
$violations = $context->getValidator()->validate($this->postalCode, $constraint);
foreach ($violations as $violation) {
$context->getViolations()->add($violation);
}
}
}
Проблема в том, что нарушения не имеют правильного пути. Я не знаю, как это установить. Также $context->buildViolation($violation->getMessage())
не очень хорошо, потому что мне придется вручную скопировать все свойства, которые могут иметь нарушения.
EDIT: Я пробовал, и это действительно very ugly.