symfony2使用表单中的验证组

Uwe*_*Uwe 11 forms validation symfony

我有一个属性的实体:

/**
 * @var string $name
 *
 * @Assert\NotBlank(groups={"foobar"})
 * @ORM\Column(name="name", type="string", length=225, nullable=false)
 */
private $name;
Run Code Online (Sandbox Code Playgroud)

表格:

class MyType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('name');
    }

    public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => '...',
            'validation_group' => array('foobar'),
        );
    }

    public function getName()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在Controller中我绑定Request并调用$ form-> isValid()

但是如何定义validation_group呢?

Jer*_*emy 13

从FormType类内部,您可以通过设置默认选项来定义与该类型关联的验证组:

public function getDefaultOptions(array $options)
{
    return array(
        'data_class' => 'Acme\MyBundle\Entity\MyEntity',
        'validation_groups' => array('group1', 'group2'),
    );
}
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案.OP不起作用的原因是因为一个错字:它是复数:'validation_groups' (4认同)

Jer*_*cic 13

我有完全相同的问题.我这样解决了......

// Entity
$employee = new Employee();

// Form creation
$form = $this->createForm(new EmployeeForm(), $employee, array('validation_groups'=>'registration'));
Run Code Online (Sandbox Code Playgroud)

我希望有所帮助!


小智 10

在控制器中构建表单时,将"validation_groups"项添加到options数组中:

$form = $this->createFormBuilder($users, array(
    'validation_groups' => array('foobar'),
))->add(...)
;
Run Code Online (Sandbox Code Playgroud)

它在symfony2书的表单页面中描述:http://symfony.com/doc/current/book/forms.html#validation-groups