Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 在数据转换之前应用验证_Php_Forms_Symfony - Fatal编程技术网

Php 在数据转换之前应用验证

Php 在数据转换之前应用验证,php,forms,symfony,Php,Forms,Symfony,我想将从提交的用户数据中获取的文本字段转换为Symfony2中的对象。我使用DataTransformer来实现这一点。当我使用诸如“NotEmpty”或“NotNull”之类的内置验证器或任何自定义验证器时,Symfony2以标准方式将我的特定对象传递给它们,但我希望在将其转换为对象之前验证此文本字段。我该怎么办?(sry,如果我的英语不太好)验证总是在反向转换的数据上进行 在转换发生之前添加验证规则的最佳方法是在FormEvents::PRE_SUBMIT上使用事件侦听器或订阅服务器 您将获

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

验证总是在反向转换的数据上进行

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

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

有关事件订阅服务器/侦听器的更多信息:


如果我想用标准的方式做呢?我希望在许多不同的应用程序中重用此表单元素。我将选择一个扩展
TextType
的自定义
FormType
,并且只在其
build
方法中添加
DataTransformer
EventSubscriber
。您可以添加一个
pre_validators
选项,该选项将包含传递给
EventSubscriber
的构造函数并用于检查原始数据的验证器列表@看@rolebi看看这个。他们说你不能在一个孩子身上加上错误,因为它是清晰的,错误不会显示在表格上。这是我目前的情况,我没有找到解决办法。