【发布时间】:2016-03-19 03:17:42
【问题描述】:
我正在尝试使用基于给定国家/地区验证的邮政编码创建地址实体。要走的路显然是 CallbackValidator。现在我有这个代码:
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()) 也不好,因为我必须手动复制违规可能具有的所有属性。
编辑:我试过了,确实是very ugly。
【问题讨论】:
标签: php validation symfony