gpt4 book ai didi

php - 使用 Symfony 验证组件验证具有动态属性的对象

转载 作者:搜寻专家 更新时间:2023-10-31 21:40:04 24 4
gpt4 key购买 nike

我正在尝试使用外部 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

现在的问题是,验证器组件似乎无法验证具有动态属性的对象(例如 stdClass 或任何其他具有魔法 getter 和 setter 的类)。

当我运行该代码时,我收到一条消息:

[Symfony\Component\Validator\Exception\ValidatorException]
Property forename does not exist in class stdClass

这是由于 PropertyMetaclass.php在突出显示的行中,使用 property_exists() 检查是否存在,这显然不起作用,因为它是针对类而不是对象进行检查。

有谁知道如何让验证器处理具有动态属性的对象?

最佳答案

不幸的是,目前无法根据此 official statement 验证具有动态属性的对象, 所以我打开了一个 feature request .

我现在的解决方法是编写一个非常简单的代码生成器类,将类定义转储到光盘上的一个文件中,然后将该文件用作数据的类文件。

关于php - 使用 Symfony 验证组件验证具有动态属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com