加载时“验证”Symfony2表单

时间:2015-11-24 17:41:01

标签: forms validation symfony

我知道这不是标准,但我想知道是否有办法以简单灵活的方式完成。

我的问题类似于Validation of a form before submission,但我也会处理可以编辑的实体。

我有一个实体连在一起创建一个购物车/订单/等。我希望能够突出显示最终购物车所需的所有字段。但是,我希望用户能够在其间保存部分信息。实际上,这些领域实际上并不是当时和那里直到最后的过程。

例如,假设我们正在处理多种形式的税务信息或其他复杂的税务信息。出于验证目的,我可能要求某些字段不为空白或具有回调约束,具体取决于其收入来源的来源或其他内容。 同时,如果有人必须手动输入所有内容,那么可以立即坐下来处理很多信息。(假设我没有可以预先填写信息的服务。)因此即使它能够保存部分信息没有效果尚未完成整个过程将是有益的。

因此,如果用户在几天或两周后回来,我想根据我假设的例子中的任何信息,直观地指出他们仍然需要填写的内容。

表单本身是在symfony2中创建的,并映射到实体。实体将混合使用验证类。一些作为单个字段的注释,另一些作为自定义回调。我在考虑让表单构建器做一些奇怪的事情,比如

  • 将验证器注入表单中。在构建每个字段时,针对非默认验证组验证每个映射值的属性。如果属性或标签属性无效,请添加它。
  • 将验证器注入侦听器。循环遍历表单的映射值,然后删除并使用修改后的attr / label_attr选项将其添加回来,因为只能在添加字段时设置选项。*

通过修改attr或label_attr,我的想法是我可以使用css添加类或自定义属性来定位。在视觉上,它将由字段上的不同颜色边框或出现在标签后面的星号表示。在这种情况下,所需的选项在大多数情况下都是假的,因为我想启用保存部分实体,如前所述。

我不能回答Validation of a form before submission的答案是,如果加载了一个实体进行编辑但提交了空白信息,它会加载包含空白信息的表单。

*我遇到了这种方法的问题,其中自定义表单类型正在添加“输入”选项。当我使用旧选项的副本添加表单字段时,我必须首先删除此“输入”选项以避免UndefinedOptionsException并实际添加该字段。这对我对Symfony形式的有限了解似乎很奇怪。

希望这个前提是有道理的。如果其他人有任何灵活和强大的解决方案,我很乐意听到他们。谢谢!

0 个答案:

没有答案