记录集上的CakePHP验证

时间:2015-02-06 18:10:20

标签: validation cakephp model

我正在尝试从数据库中读取所有记录,通过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)说结构是正确的,但结构没有得到验证。

请帮忙

0 个答案:

没有答案