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类
,但我的错误是由表单初始化中的错误验证组引起的),但它通常是一种像您这样做的好方法。