CakePHP 1.3:$ this->验证不验证

时间:2012-01-23 17:31:25

标签: cakephp

我正在尝试从模型中手动验证数组,但无论我在数组中填充哪些无效数据,验证都会成功。

在我的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->验证?如果是这种情况,我希望它会失败而不是通过。

任何建议都值得赞赏!

2 个答案:

答案 0 :(得分:1)

事实证明我需要:

'required' => true

在每个字段的验证规则中。 notempty规则仅适用于Cake从表单验证时的情况。我原本应该发布我的规则。我相信有人会抓住它。

答案 1 :(得分:0)

乍一看,我认为您需要将$this->set($data);更改为:

$this->set(array('CustomerLocation' => $data));

CakePHP使用数组的第一级来确定要验证的模型。

由于没有一个键与型号名称相匹配(即您没有LocationNumberPackingNotes型号),因此未找到或应用任何验证规则。