我正在尝试从模型中手动验证数组,但无论我在数组中填充哪些无效数据,验证都会成功。
在我的CustomerLocation模型中,我正在尝试验证$ data:
$this->create();
$this->set($data);
if (!$this->validates()){
//some action if validation fails
}
这种情况下的$数据是一个简单的数组:
Array
(
[location_number] => 125-Knoxville - M
[packing_notes] => Test
[packing_label_message] => packing message
[length] => 4
[width] => 4
[height] => 4
[weight] => 4
[shipping_carrier] => UPS
[shipping_service] => 2nd Day Air
[ship_date] =>
[id] => 768
[row] => 4
)
上面的$ data不包含CustomerLocation模型的必需字段,因此它应该完全无法验证。
此$ data的来源是导入的.csv行。当我从烘焙的Cake表单中验证此模型时,验证工作正常。
我的$ data数组是否格式化为$ this->验证?如果是这种情况,我希望它会失败而不是通过。
任何建议都值得赞赏!
答案 0 :(得分:1)
事实证明我需要:
'required' => true
在每个字段的验证规则中。 notempty
规则仅适用于Cake从表单验证时的情况。我原本应该发布我的规则。我相信有人会抓住它。
答案 1 :(得分:0)
乍一看,我认为您需要将$this->set($data);
更改为:
$this->set(array('CustomerLocation' => $data));
CakePHP使用数组的第一级来确定要验证的模型。
由于没有一个键与型号名称相匹配(即您没有LocationNumber
或PackingNotes
型号),因此未找到或应用任何验证规则。