Php 约束验证器在Symfony 2中实体就绪之前验证实体
我的Symfony2(2.4.2)应用程序有一个表单和一个实体,我在一些字段上设置了一些验证约束。实体的变量之一是数组,该数组不应为空 表单有一个未直接映射到实体的字段。输入是逗号分隔的字符串;此字符串将被Php 约束验证器在Symfony 2中实体就绪之前验证实体,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我的Symfony2(2.4.2)应用程序有一个表单和一个实体,我在一些字段上设置了一些验证约束。实体的变量之一是数组,该数组不应为空 表单有一个未直接映射到实体的字段。输入是逗号分隔的字符串;此字符串将被preg_split拆分为一个数组,并保存到前面提到的实例变量中。此操作由FormEvents::POST_SUBMIT触发 但是,当我提交表单时,即使输入字符串不是空的,表单也会显示验证失败。我做了一些调试,发现验证实际上发生在FormEvents::POST_SUBMIT之前。我尝试过其他
preg_split
拆分为一个数组,并保存到前面提到的实例变量中。此操作由FormEvents::POST_SUBMIT
触发
但是,当我提交表单时,即使输入字符串不是空的,表单也会显示验证失败。我做了一些调试,发现验证实际上发生在FormEvents::POST_SUBMIT
之前。我尝试过其他的FormEvents
,但没有成功
是否有方法在验证之前触发事件
注意:上面的场景被缩短了,如果上下文是我的真实应用程序,我想问一个问题就太长了。使用DataTransformers进行此类操作。不形成事件 数据转换器将在验证之前启动。转换器将把用户键入的任何内容转换为您内部期望的任何内容。然后,验证将对内部数据格式进行操作
为什么不在
FormEvents::PRE_SUBMIT
中执行此操作?为什么表单字段未映射到实体?这是一个验证错误,是因为该字段当时是空的,还是因为它不是POST_SUBMIT之后的数组?由于它不是空的,也许您应该将验证的格式更改为拆分事件之前的格式。使用DataTransformers进行此类操作。不是表单事件。@JamesHalsall正如我所说,我尝试了所有表单事件,但没有成功。@SenseeException,因为客户端要求输入字段是文本字段,并允许用户以“000000000000000000…”格式输入一些电话号码。