我正在尝试使用外部yml规则集(不在Symfony项目中)使用Symfony2的验证组件(从2.1分支开始)验证导入的csv文件中的数据:
use Symfony\Component\Validator\Validation;
$builder = Validation::createValidatorBuilder();
$builder->addYamlMapping('rules.yml');
$validator = $builder->getValidator();
$row = (object)array('name' => 'foo');
$violations = $validator->validate($row);
这是我的yml文件:
stdClass:
properties:
name:
- MinLength: 10
现在有一个问题是,Validator Component似乎无法验证具有动态属性的对象(如stdClass
或任何其他具有魔法getter和setter的类)。
当我运行该代码时,我收到一条消息:
[Symfony\Component\Validator\Exception\ValidatorException]
Property forename does not exist in class stdClass
这是由于突出显示的行中的PropertyMetaclass.php使用property_exists()
检查存在,这显然不起作用,因为它检查类而不是对象。
有谁知道如何让Validator处理具有动态属性的对象?
答案 0 :(得分:1)
不幸的是,目前无法根据此official statement验证具有动态属性的对象,因此我打开了feature request。
我的解决方法是编写一个非常简单的代码生成器类,将类定义转储到光盘上的文件中,然后将其用作数据的类文件。
答案 1 :(得分:0)