我有以下问题:
我需要验证由表单传递的控制器中的数据。特别的是:表单中的字段不存在于数据库中,而是存在于$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()
进行验证。现在可以了;)