如何在验证前停止Lithium将数组的输入值压平?
Lithium中的Validator :: check方法在处理验证器之前在输入上调用Set :: flatten,请参见此处: http://li3.me/docs/lithium/util/Validator::check()
...
$values = Set::flatten($values);
...
这个问题是它假设$ values中的值是标量。但是,我将数组传递给模型(这是一个MongoDB文档)。
所以
'users' => ['foo','bar']
将成为
'users.0' => 'foo',
'users.1' => 'bar'
完全破坏验证,因为它会更改属性名称。
我实际上可以删除flatten任务,但我不想搞乱框架的内部。我也可以在验证之前将数组转换为JSON字符串,对象等,然后将其转换回来,但这听起来很蹩脚:)另一方面,我认为应该有一种简单而好的方法来跳过扁平化不知。