Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 约束验证器在Symfony 2中实体就绪之前验证实体_Php_Forms_Validation_Symfony - Fatal编程技术网

Php 约束验证器在Symfony 2中实体就绪之前验证实体

Php 约束验证器在Symfony 2中实体就绪之前验证实体,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我的Symfony2(2.4.2)应用程序有一个表单和一个实体,我在一些字段上设置了一些验证约束。实体的变量之一是数组,该数组不应为空 表单有一个未直接映射到实体的字段。输入是逗号分隔的字符串;此字符串将被preg_split拆分为一个数组,并保存到前面提到的实例变量中。此操作由FormEvents::POST_SUBMIT触发 但是,当我提交表单时,即使输入字符串不是空的,表单也会显示验证失败。我做了一些调试,发现验证实际上发生在FormEvents::POST_SUBMIT之前。我尝试过其他

我的Symfony2(2.4.2)应用程序有一个表单和一个实体,我在一些字段上设置了一些验证约束。实体的变量之一是数组,该数组不应为空

表单有一个未直接映射到实体的字段。输入是逗号分隔的字符串;此字符串将被
preg_split
拆分为一个数组,并保存到前面提到的实例变量中。此操作由
FormEvents::POST_SUBMIT
触发

但是,当我提交表单时,即使输入字符串不是空的,表单也会显示验证失败。我做了一些调试,发现验证实际上发生在
FormEvents::POST_SUBMIT
之前。我尝试过其他的
FormEvents
,但没有成功

是否有方法在验证之前触发事件


注意:上面的场景被缩短了,如果上下文是我的真实应用程序,我想问一个问题就太长了。

使用DataTransformers进行此类操作。不形成事件

数据转换器将在验证之前启动。转换器将把用户键入的任何内容转换为您内部期望的任何内容。然后,验证将对内部数据格式进行操作


为什么不在
FormEvents::PRE_SUBMIT
中执行此操作?为什么表单字段未映射到实体?这是一个验证错误,是因为该字段当时是空的,还是因为它不是POST_SUBMIT之后的数组?由于它不是空的,也许您应该将验证的格式更改为拆分事件之前的格式。使用DataTransformers进行此类操作。不是表单事件。@JamesHalsall正如我所说,我尝试了所有表单事件,但没有成功。@SenseeException,因为客户端要求输入字段是文本字段,并允许用户以“000000000000000000…”格式输入一些电话号码。