cakePHP:验证控制器(hasMany)中的数据


cakePHP: validating data in controller (hasMany)

我有以下问题:
我需要验证由表单传递的控制器中的数据。特别的是:表单中的字段不存在于数据库中,而是存在于$validate-Array中。-这应该不是问题。
另一件事是,模型与这个表单的部分有一个hasmany关系。

Text hasMany Proofs

这是验证数组:

var $validate = array(  
   'freetext' => array(  
      'between' => array(  
          'rule' => array('between', 250, 1000),  
          'message' => '..',  
      ),  
   ),  
);  
下面是传递给控制器 的数据示例
[Proof] => Array
    (
        [0] => Array
            (
                [freetext] => asd
            )
        [1] => Array
            (
                [freetext] => asd
            )
        [2] => Array
            (
                [freetext] => asd
            )
    )

我使用以下代码进行验证:

$this->Texts->set($this->data);   
if ($this->Texts->validates()) {  

当我调用它时,它返回true,所以验证成功。但是免费文本少于250个字符。

但是:表单显示红色星号(代表我),表示验证数组已成功解析并应用于表单。
在相应的控制器beforeValidate() { debug($this->data); }中也显示了正确的数据。

那么为什么数据验证成功,即使策略不是我的?

谢谢吧!
~ MxAgent

快速跳转到CookBook (http://book.cakephp.org/view/1154/between)会发现您的格式似乎不正确。试试这个(去掉"between"数组):

var $validate = array(  
   'freetext' => array(  
          'rule' => array('between', 250, 1000),  
          'message' => '..',  
   )  
);  

更新到cakePHP 2.0,并使用validateMany()进行验证。现在可以了;)