1
我想在我的表單類型使用自定義的驗證工作,但我得到這個錯誤:symfony的表單類型使用自定義約束/驗證
沒有默認選項配置爲約束的appbundle \驗證\約束\ 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),
]);
};
但是我得到了上面寫的錯誤。 我不明白如何解決這個問題,如果我使用正確的方式在表單類型中使用自定義約束驗證器。
感謝您的幫助
這個選項我沒有錯誤了,但我的驗證不使用 –
valdate方法不叫? –
哼哼是的,但我需要通過'type'來使用我的開關盒 –