在数据转换之前应用验证

时间:2014-08-08 10:56:45

标签: php forms symfony

我想将我从提交的用户数据中获取的文本字段转换为Symfony2中的Object。我使用DataTransformer来做到这一点。当我使用内置验证器(如'NotEmpty'或'NotNull')或任何以标准方式构建的自定义验证器时,Symfony2会将我的特定对象传递给它们,但我想在将其转换为对象之前验证此文本字段。我该怎么办? (如果我的英语不太好的话,请你好)

1 个答案:

答案 0 :(得分:5)

验证总是在逆向转换数据上完成。

在转换发生之前添加验证规则的最佳方法是在FormEvents::PRE_SUBMIT上使用事件监听器或订阅者。

您将获得原始数据。只需在此处应用验证逻辑,然后使用$event->getForm()->get('xxxx')->addError()方法在相应字段中添加错误。

有关活动订阅者/听众的更多信息:

http://symfony.com/doc/current/components/form/form_events.html#event-listeners http://symfony.com/doc/current/components/form/form_events.html#event-subscribers