Symfony 数据转换器与约束

Symfony 数据转换器与约束,symfony,symfony4,pimcore,Symfony,Symfony4,Pimcore,我偶然发现了一个关于如何正确使用它们的问题。虽然我知道如何实现它们并将它们添加到我的表单字段中,但我想知道DataTransformers应该如何与它们相结合 下面的代码显示了我的用例 形式 验证的问题是您试图将对象验证为布尔类型。尝试验证时始终执行约束,提交表单时始终执行约束。因此,您已经转换了数据,这就是为什么IsBool验证失败的原因,因为该值位于类型“同意对象”中;不是布尔值 要解决此问题,必须创建新的验证约束覆盖IsTrue 在一个问题中提供太少的信息和太多的信息之间找到适当的平衡是一

我偶然发现了一个关于如何正确使用它们的问题。虽然我知道如何实现它们并将它们添加到我的表单字段中,但我想知道
DataTransformer
s应该如何与它们相结合

下面的代码显示了我的用例

形式
验证的问题是您试图将对象验证为布尔类型。尝试验证时始终执行约束,提交表单时始终执行约束。因此,您已经转换了数据,这就是为什么
IsBool
验证失败的原因,因为该值位于类型“同意对象”中;不是布尔值

要解决此问题,必须创建新的验证约束覆盖IsTrue


在一个问题中提供太少的信息和太多的信息之间找到适当的平衡是一个挑战。我承认我被你的细节迷住了。我建议尝试通过仅使用约束字段创建实体/表单来隔离问题。我想打个电话可能会有帮助。但这只是一个猜测。谢谢你的反馈-非常感谢。我将创建一个更简单的用例,然后重新表述我的问题。不过,我可能需要一段时间才能找到时间。我还将检查视图转换器是否有帮助,但视图转换器是否会导致完全相同的问题,因为转换后正在进行验证?在这个网站上有点不赞成,但创建了一个新项目,添加重新创建问题所需的最小值,然后将整个问题检查到github中,这样可以更容易地解决此类问题。只是一个想法。我试图尽可能地简化这个问题——希望现在我想要实现的目标更加清晰。我仍然需要一些时间来尝试
addViewTransformer
方法,而不是
addModelTransformer
方法。使用
addViewTransformer
会导致类似的问题,因为
复选框类型
会在引擎盖下添加另一个视图转换器,即
BooleanToStringTransformer
。此转换器希望传递的值的类型为
string
。由于提交的值已转换为
同意
,因此会引发
转换失败异常
,导致表单无效。感谢您提出此解决方案。不幸的是,我已经意识到这一点,我正在寻找一种不同的方式来解决我的问题。原因是我自己正在创建一个bundle,不想让开发人员知道自定义约束(因为我相信这只会增加复杂性)。然而,在这一点上,它似乎是唯一的解决方案,所以我接受这个答案,因为它确实解决了问题,并且有适当的文档记录。
FormController.php on line 30:
"VALID"