【发布时间】:2018-07-28 20:35:11
【问题描述】:
我想知道您是否可以根据 Symfony 表单中的值验证字段? 例如,我在与之关联的表单中有一个 url 和一个名称。如果名称的值是“instagram”,假设我希望 URL 由 Instagram Validator 类验证,依此类推。我写了一个开关,但我得到了错误:
在 null 上调用成员函数 buildViolation()
我尝试过的:
public function validateURL($url, $name)
{
$message = '';
switch ($name) {
case "Instagram":
$instagramValidator = new InstagramValidator();
$instagramValidator->validate($url, new Url());
break;
default:
return;
}
return $message;
}
Instagram验证器:
class InstagramValidator extends ConstraintValidator
{
/**
* {@inheritdoc}
*/
public function validate($url, Constraint $constraint)
{
if (!preg_match('/(?:http:\/\/)?(?:www\.)?instagram\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-]*)/', $url)) {
$this->context->buildViolation($constraint->message)
->setParameter('{{ value }}', $this->formatValue($url))
->addViolation();
}
}
}
那么有办法解决这个问题吗?
【问题讨论】:
标签: symfony validation constraints