2013-03-21 55 views
2

我有两个实体(我们称它们为A和B)以一对一关系和一个表单来填充它们。根据在实体A的状态下 乙实体字段填充如下:当每个字段为空时Symfony2强制子表单验证

实体A:状态0 实体B:这两个字段空

实体A:状态1个 实体B:字段1填充字段2空

实体A:状态2 实体B:字段1空字段2填充

两个字段填充状态是不允许的。

所以我做了3个自定义回调验证器来检查状态1,2,并且不允许。 不幸的是,如果两个字段都为空,则不会触发状态1和2,因为字段为空;事实上添加一个虚假的隐藏字段到表单触发验证过程,因为表单已填充!

很明显,这是一个骇人的解决方案,所以我想知道是否有办法强制子表单验证,即使每个表单域都是空的。

回答

0

Symfony不验证表单,它验证实体。你最好最好是使你的实体验证功能,并使用这里所描述的symfony的“吸气剂”验证确认:

http://symfony.com/doc/2.1/book/validation.html#getters

相信对于你的情况,具有验证实体与相关联的一个表单类型。

+0

感谢您的澄清。不过,我已经有了一个由@Assert \ Callbacks注释调用的回调验证方法。所以我宁愿使用这种方法来将错误消息设置为适当的字段。 – 2013-03-22 07:58:08