我有以下问题:
我需要在控制器中验证数据,该控制器由表单传递。特殊的事情:表单中的字段不存在于数据库中,但是在$ 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
答案 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()
进行验证。现在它有效;)