我使用Symfony v2.3.x并且我有一个看起来像这样的验证文件:
Namespace\To\MyEntity:
properties:
entityCollection:
- Type: { groups: [mygroup], type: array }
- All:
constraints:
- Type: { groups: [mygroup], type: Namespace\To\AnotherEntity }
因此MyEntity
必须在AnotherEntity
字段中包含entityCollection
个数组。
它成功验证entityCollection
必须是数组。但是,它无法验证该数组的元素是否为指定类型。
例如,这两个var_dump
都会在屏幕上显示值0
,即使我预计会出现非零值:
$obj = new MyEntity();
$obj->entityCollection = array(12345);
$errors = $symfonyValidator->validate($obj, array('mygroup'));
var_dump(count($errors));
$obj = new MyEntity();
$obj->entityCollection = array("something");
$errors = $symfonyValidator->validate($obj, array('mygroup'));
var_dump(count($errors));
我甚至尝试从验证文件中删除constraints
条目;它没有任何区别。
我看了Symfony's official page about the All
keyword,但找不到任何有用的东西。
我应该如何修改validation.yml
文件中的条目,以便验证按预期工作?
提前谢谢。
答案 0 :(得分:0)
你的配置看起来很好,虽然我更习惯于将它们作为注释,因此它很清楚它们适用于哪些实体属性。你试过了吗?
$errors = $symfonyValidator->validate($obj, array('mygroup'), true);
validate()
方法的第3个参数是遍历您正在验证的对象的布尔值。
bool $traverse Whether to traverse the value if it is traversable.