【发布时间】:2014-08-12 12:57:31
【问题描述】:
我一直在关注cookbook 关于如何创建类约束验证器,现在我正要在validate() 函数中添加违规。
但是我的 IDE 通知我函数 addViolation() 和 addViolationAt() 已弃用。
有人可以为我指出如何使用Context\ExecutionContextInterface::buildViolation() 函数的正确方向吗?
$this->context 是Symfony\Component\Validator\ExecutionContext 的一个实例
class ProtocolClassValidator extends ConstraintValidator
{
public function validate($protocol, Constraint $constraint)
{
if ($protocol->getFoo() != $protocol->getBar()) {
$this->context->addViolationAt(
'foo',
$constraint->message,
array(),
null
);
}
}
}
将调用 $this->context->addViolationAt() 更改为简单的 $this->context->buildViolation() 时,我收到以下异常:
UndefinedMethodException:尝试调用方法“buildViolation” 类“Symfony\Component\Validator\ExecutionContext”在 剥离路径 第 23 行。您的意思是调用:“addViolation”吗?
第 23 行代码如下:
$builder = $this->context->buildViolation($constraint->message)
->atPath('formField')
->addViolation();
【问题讨论】:
标签: php validation symfony