4

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

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

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

4

2 回答 2

2

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

您可以使用一个几乎是事件侦听器的钩子:如果某事发生或将要发生,它会拦截事件并将其重定向到您的函数。

在这种情况下,您需要一个PRE_BIND钩子(自 2.3 版本以来已弃用,现在称为PRE_SUBMIT

如果您需要有关方面的帮助,请阅读此内容

于 2013-06-14T07:13:19.883 回答
0

要么编写自己的验证断言来过滤,然后为此目的代理其他验证器......

...或一个或多个正则表达式断言

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

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

于 2013-06-14T04:27:06.877 回答