将验证器添加到自定义表单类型

Vla*_*Ria 6 validation symfony

如何将验证器添加到自定义表单类型?以 IBAN 为例。

use Symfony\Component\Validator\Constraints\IbanValidator;

class IBANType extends AbstractType
{
    public function getName()
    {
        return 'iban';
    }

    public function getParent()
    {
        return 'text';
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        //IbanValidator ???
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里他们建议使用监听器:

接口 FormValidatorInterface 已弃用,并将在 Symfony 2.3 中删除。

如果您使用此接口实现了自定义验证器,则可以通过侦听 FormEvents::POST_BIND(或任何其他 *BIND 事件)的事件侦听器来替换它们。如果您使用 CallbackValidator 类,现在应该将回调直接传递给 addEventListener。

但如何呢?

sco*_*ico 5

尝试这个:

use Symfony\Component\Validator\Constraints\IbanValidator;

class IBANType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('iban', 'text', [
            'constraints' => [
                new IbanValidator(),
            ],
        ]);
    }
}
Run Code Online (Sandbox Code Playgroud)