Symfony2验证过滤器

时间:2013-06-14 00:59:54

标签: validation symfony filtering

在我的Symfony 2应用程序中,我需要在将输入传递给验证[1]之前对其进行过滤,但是,我似乎无法在Symfony中找到任何系统来执行此操作。

我寻找的过滤类型是例如能够在验证之前过滤特定字段中的短划线。例如。用户可以输入123-123,但唯一可接受的值是123123。就像我可以使用约束设置验证规则一样,我正在为过滤器寻找类似的东西。

[1] http://symfony.com/doc/current/book/validation.html

2 个答案:

答案 0 :(得分:2)

Nifr's答案很好,但缺少一个重要的替代方案,如果我理解正确你的问题,似乎完全符合你的需求。

您可以使用几乎是事件监听器的 hook :如果发生或将要发生的事情,它会拦截事件并将其重定向到您的函数。

在这种情况下,你需要一个 PRE_BIND 钩子(自2.3版以来不推荐使用,现在称为 PRE_SUBMIT

如果您需要有关

的帮助,请阅读this

答案 1 :(得分:0)

编写own Validation Assert进行过滤,然后为此目的代理其他验证器......

...或一个或多个Regex Asserts

...或使用DataTransformer转换/过滤输入。

在涉及DataTransformer的情况下,您还可以考虑创建一个新的FieldType,它使用像 date 表单字段这样的分隔符来呈现两个输入。 (如果不与widget => single_text一起使用)