我正在为嵌入这样的实体类型的数组数据构建表单:
$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
实体包含验证约束,但从不调用它们。缺少什么/错了?
答案 0 :(得分:1)
Valid
约束不支持validation groups。仅使用没有组的约束。
例如:
Acme\BlogBundle\Entity\User:
properties:
email:
- Email: { groups: [registration] }
password:
- NotBlank: { groups: [registration] }
- Length: { min: 7, groups: [registration] }
city:
- Length:
min: 2
如果您对Valid
使用UserType
约束,则只会验证city
Length
。
答案 1 :(得分:0)
正如您在此处所述,如果您已向Book实体添加了验证,则表单将自动使用指定类的这些验证。
为此,您应该将对象Book传递给表单,或者使用BookType中的data_class选项来设置Book实体。
要使用data_class选项,您可以执行以下操作:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'YourName\YourBundle\Entity\Book',
));
}
但是,您可以使用约束键指定不同的验证。
当您指定此Valid类约束时,您将覆盖Book实体中定义的约束。
来源:http://symfony.com/doc/current/book/forms.html#form-option-constraints