我正在尝试从数据库中读取所有记录,通过validate()函数传递它们以测试验证,然后再将它们发送到第三方API。即使我故意创建无效条目,我也会收到验证数据:
我构建了一个小测试用例:
<?php
App::uses('AppController', 'Controller');
class ValidatetestsController extends AppController {
public function test() {
$this->Validatetest->set(array('clientname' => 'tooshort'));
if ($this->Validatetest->validates()) {
return('Data Validated');
} else {
return('Data Not Validated');
}
}
public function testfails() {
$this->Validatetest->set($this->Validatetest->find('all'));
if ($this->Validatetest->validates()) {
return('Data Validated');
} else {
return('Data Not Validated');
}
}
}
我的简单测试表如下所示:
DROP TABLE IF EXISTS `validatetests`;
CREATE TABLE IF NOT EXISTS `validatetests` (
`id` int(11) unsigned NOT NULL DEFAULT '0',
`clientname` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `validatetests` (`id`, `clientname`) VALUES
(2, 'tooshort');
当我打电话
validatetests/test
- 它100%正常无效validatetests/testfails
- 当值太短时验证失败区别在于数据阵列的结构!
工作:(数据未验证)
Array([Validatetest] => Array([clientname] => tooshort))
不工作:(数据验证)
Array([Validatetest] => Array([0] => Array([Validatetest] => Array([id] => 2[clientname] => tooshort))))
Cookbook(http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find-all)说结构是正确的,但结构没有得到验证。
请帮忙