[英]Use a custom constraint/validator in symfony form type
我正在尝试在表单类型中使用自定义工作验证器,但出现此错误:
没有为约束AppBundle \\ Validator \\ Constraints \\ DnsContent配置默认选项
我做了这个约束+验证器:
// My constraint
/**
* @Annotation
*/
class DnsContent extends Constraint
{
public $message = 'fail';
/**
* {@inheritdoc}
*/
public function validatedBy()
{
return 'dns_content';
}
}
// My validator
class DnsContentValidator extends ConstraintValidator
{
public function validate($type, Constraint $constraint)
{
switch ($type) {
case 'A':
return new Assert\Ip(['version' => '4']);
break;
case 'AAAA':
return new Assert\Ip(['version' => '6']);
break;
case 'CNAME':
case 'NS':
case 'MX':
return new Assert\Regex(['pattern' => '/^[[:alnum:]-\._]+$/u']);
break;
default:
return false;
break;
}
}
}
我正在尝试在我的表单类型内使用它
$contentConstraints = function (FormInterface $form, $type) {
$form->add('content', null, [
'label' => 'form.content',
'translation_domain' => 'global',
'constraints' => new DnsContent($type),
]);
};
但是我收到上面写的错误。 我不知道如何解决此问题,如果我使用正确的方式在表单类型中使用自定义约束验证器,我也不知道。
谢谢你的帮助
尝试
$form->add('content', null, [
'label' => 'form.content',
'translation_domain' => 'global',
'constraints' => new DnsContent(),
]);
当不传递关联数组但getDefaultOption()返回null时,抛出ConstraintDefinitionException
您可以添加自定义选项作为约束字段
class DnsContent extends Constraint
{
public $message = 'fail';
public $type;
/**
* {@inheritdoc}
*/
public function validatedBy()
{
return 'dns_content';
}
}
现在您可以在数组中传递此选项
new DnsContent(['type' => $type])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.