【发布时间】:2014-02-19 11:12:29
【问题描述】:
我的 Symfony2 (2.4.2) 应用程序有一个表单和一个实体,我在某些字段上设置了一些验证约束。实体的变量之一是一个不应为空的数组。
表单有一个不直接映射到实体的字段。输入是逗号分隔的字符串;这个字符串将preg_split 放入一个数组并保存到前面提到的实例变量中。该操作由FormEvents::POST_SUBMIT触发。
但是,当我提交表单时,即使输入字符串不为空,表单也会显示验证失败。我做了一些调试,发现验证实际上发生在FormEvents::POST_SUBMIT之前。我尝试过其他FormEvents,但没有运气。
有没有办法在验证之前触发事件?
注意:上面的场景被缩短了,如果上下文是我的真实应用程序,我要问一个问题太长了。
【问题讨论】:
-
你为什么不在
FormEvents::PRE_SUBMIT做这个? -
为什么表单域没有映射到实体?这是一个验证错误,因为该字段当时是空的,还是因为它不是一个看起来像 POST_SUBMIT 之后的数组?由于它不是空的,也许您应该将验证格式更改为拆分事件之前的样子。
-
使用 DataTransformers 进行此类操作。不形成事件。
-
@JamesHalsall 正如我所说,我已经尝试了所有的 FormEvents 但没有运气。
-
@SenseException 因为客户端要求输入字段是文本字段,并允许用户输入一些格式为'000000, 000000, 000000...'的电话号码。
标签: php forms validation symfony