Symfony2:如何在另一个对象/数组中验证具有约束的对象/数组?

时间:2016-11-16 17:01:56

标签: validation symfony symfony-validator

它是动态构建的,注释不是一种选择。我在数组中有约束。

似乎你需要手动构建验证器,但我很快就遇到需要构建需要加载器的MetaDataFactory的点,但是所有的加载器都有从文件加载元数据的工作..我不我认为我做得对。

简单地说:

我有一个带键/值的数组/对象。我希望它们由另一个包含约束的数组验证。

不可能遍历密钥并在每个密钥上调用validate,因为有些依赖于其他密钥的上下文值。

$array = [
  'key1' => 'abc',
  'key2' => 'def',
];

$constraints = [
  'key1' => new All([
    new Constraint..,
    new CallbackConstraint.., // <- this one checks key2 for its value      
  ]),
  'key2' => new NotBlank
];

我还可以构建一个包含两者的数组。

Againt,对象/数组是动态构建的,我无法验证容器本身。它内部的键是自己的定义。

所以我基本上想要的是:

$validator->validate($array, $constraints); 

我可以想象你需要一个自定义的MetaDataFactory / Loader / Context类,问题只是回调验证器需要访问$this->getRoot()来获取其他值

没关系,你需要像CallbackLoader这样的东西来创建你自己的属性=&gt;约束映射。但是LoaderInterface需要ClassMetaData的具体实现,除非你在ArrayObject上有方法/属性,否则它本身无法处理数组或ArrayObjects。但是 - 因为我的容器是动态构建的,所以我不能拥有它。由于属性/ method_exists调用,方法方法不是一个选项。

0 个答案:

没有答案