我通过将某些数据插入字段并单击更新按钮来更新了一些数据,但validates()
始终返回false。
所有字段都正确填充,并且不显示任何错误消息 - validates()
只返回false。
为什么呢?
$this->Post->set($this->data);
if ($this->Post->validates())
echo 'ok';
else
echo 'error';
答案 0 :(得分:5)
查看this post以获取一些提示。 相关的内容在这里给出。
保存()不起作用!
有时会发生save()
失败,没有任何明显的原因。您的数据数组看起来很好,您已正确构建表单等,但没有执行任何查询。由于验证错误,保存很可能失败。也许您正在更新某个模型,并且当表单中的当前字段通过验证时,某些“其他”可能导致验证规则失败。查看验证内容的简单(有用)方法是在视图中执行pr($this->validationErrors);
。通过使用这种方法,您可以准确地看到模型验证发生了什么。另一个选项是将false
作为第二个参数传递给save();
,以便禁用验证。但是,后一种方法没有提供太多提示,不应该用于修复失败的问题,而是故意避免验证。
保存()仍然无效!
您的模型或应用模型中有beforeSave();
吗?始终仔细检查此方法,更重要的是,确保它返回true
。
在创建或更新时进行验证
CakePHP有一个'on'
密钥可用于$validate
数组。它允许您指定是在新记录创建期间还是在更新现有记录期间强制执行规则。例如,如果您只想在创建新用户帐户时检查唯一的电子邮件地址,则应将'on' => 'create'
添加到$validate
阵列。因此,在更新/编辑某些用户时,将忽略此规则。