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

时间:2011-10-31 09:43:23

标签: php validation cakephp

我有以下问题:
我需要在控制器中验证数据,该控制器由表单传递。特殊的事情:表单中的字段不存在于数据库中,但是在$ validate-Array中。 - 哪个应该不是问题。
 另一件事是,模型与此表单的部分具有hasMany-Relationship。

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,因此验证成功。但是freetext有少于250个字符。

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

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

非常感谢!
〜MxAgent

2 个答案:

答案 0 :(得分:0)

快速浏览CookBook(http://book.cakephp.org/view/1154/between)可以发现您的格式似乎不正确。试试这个(放下“之间”数组):

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

答案 1 :(得分:0)

更新为cakePHP 2.0并使用validateMany()进行验证。现在它有效;)