Php 使用数组和实体验证Symfony 2表单

Php 使用数组和实体验证Symfony 2表单,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我正在为数组数据构建一个表单,其中嵌入了如下实体类型: $data = array('message' => '', 'book' => new Book()); $formBld = $this->createFormBuilder($data); $formBld->add('book', new BookType(), array( 'label' => false, 'constraints' => new Symfon

我正在为数组数据构建一个表单,其中嵌入了如下实体类型:

$data = array('message' => '', 'book' => new Book());
$formBld = $this->createFormBuilder($data);
$formBld->add('book', new BookType(), array(
        'label' => false,
        'constraints' => new Symfony\Component\Validator\Constraints\Valid()
     ))
     ->add('message', 'textarea')
     ->add('send', 'submit')
;

Book
实体包含验证约束,但从未调用它们。有什么遗漏/错误?

如您在此处所读,如果您已将验证添加到Book实体,则表单将自动使用指定类的这些验证

为此,应将对象书本传递给表单,或使用BookType中的data_类选项设置书本实体

要使用data_class选项,请执行以下操作:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'YourName\YourBundle\Entity\Book',
    ));
}
但是,可以使用约束键指定不同的验证

指定此有效类约束时,将覆盖在书本实体中定义的约束


来源:

有效
约束不支持。仅使用不带组的约束

例如:

Acme\BlogBundle\Entity\User:
    properties:
        email:
            - Email: { groups: [registration] }
        password:
            - NotBlank: { groups: [registration] }
            - Length: { min: 7, groups: [registration] }
        city:
            - Length:
                min: 2

如果对
UserType
使用
Valid
约束,则只验证
城市
长度

是否对
书籍
实体约束使用验证组?就是这样,@pazulx!我在那里有一个验证小组。你能写一个简短的答案,这样我就可以选择正确的答案了吗?谢谢!虽然在这种情况下,这并没有解决我的问题(我的默认选项中已经有了正确的
data\u类
,但我的错误是由表单初始化中的错误验证组引起的),但它通常是一种像您这样做的好方法。