【发布时间】:2012-08-25 05:49:19
【问题描述】:
我正在尝试使用外部 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 组件似乎无法验证具有动态属性的对象(例如 stdClass 或任何其他具有魔术 getter 和 setter 的类)。
当我运行该代码时,我收到一条消息:
[Symfony\Component\Validator\Exception\ValidatorException]
Property forename does not exist in class stdClass
这是由于突出显示的行中的 PropertyMetaclass.php 使用 property_exists() 检查存在性,这显然不起作用,因为它检查的是类而不是对象。
有谁知道如何让验证器处理具有动态属性的对象?
【问题讨论】:
-
我更新了代码以展示我最新的 symfony2.1 成果。
标签: php validation symfony symfony-2.1