Symfony-如何对属性数组正确使用“ error_mapping”选项?

时间:2019-07-03 11:54:54

标签: php forms validation sylius symfony-4.2

上下文

我将Sylius 1.4.4和Symfony 4.2.8一起使用。

这是我要研究的代码的要点: https://gist.github.com/migmolrod/1dbad05afc58974f7b938ab67a36b132

  1. 主要的实体企业。然后,我有一个 ContactAwareTrait ,其中包含“电话”,“移动”,“电子邮件”和“传真”字段,因此我可以轻松地在多个实体中重复使用它。业务实体使用此特征(我的代码中也使用其他特征,但为简单起见,我仅将与业务相关的内容放在要点中)。
  2. BusinessType 表单类型然后使用 ContactType 表单类型(再次,因此我可以在实体具有ContactAwareTrait的其他表单类型中重用它)。
  3. 然后,我有了验证yaml 文件,在其中指定了约束。在这里,我在业务验证配置中对联系人字段验证配置进行了硬编码。有没有一种方法可以将其抽象到某种“联系人验证”文件中,然后可以在实体验证中重用?因为现在我要重复代码/配置。
  4. 我还把模板放在了那里,因为...好吧,在这一点上我只是绝望了,不知道在最意外的地方是否做错了什么。 。

问题

如果我为所有这些属性/字段(电话,手机,电子邮件和/或传真)输入了无效值,则错误消息将显示在表格顶部,未附加到相应字段。

我尝试过的

我一直在这里寻找SO的解决方案,但是我发现的所有结果都打算与子实体一起使用。就我而言,联系信息本身不是实体,而是形式上的一系列属性。

那么我可以在特定的用例中使用' error_mapping '来告诉验证器“嘿,此错误属于该字段” ?如果是这样,怎么办?我在多个地方尝试了'error_mapping' => ['several permutations here' => 'the same amount or more permutations here']的多个排列(在BusinessType中,在ContactType buildForm中,在ContactType字段中对ContactType的调用...),甚至清除了更改之间的缓存以确保所有内容都就位。但没有运气。

我该怎么办?最好抽象出与模型的联系(甚至没有将其作为实体/表映射到模型)并围绕它重构代码?

任何帮助将不胜感激。我宁愿学习和理解如何使用error_mapping选项,即使此时出于好奇。

0 个答案:

没有答案