【问题标题】:cakephp, validate errorcakephp,验证错误
【发布时间】:2011-01-14 08:34:24
【问题描述】:

我通过将数据插入字段并单击更新按钮来更新一些数据,但 validates() 总是返回 false。 所有字段均已正确填写,并且不显示任何错误消息 - validates() 仅返回 false。 为什么?

$this->Post->set($this->data);
if ($this->Post->validates())
    echo 'ok';
else
    echo 'error';

【问题讨论】:

  • 首先,语法不正确,有一个开头的{,但没有结尾的}。其次,尝试debug($this->Post->invalidFields()) 看看哪些字段失败了。
  • 谢谢。我在数据库中有 8 个字段,但只希望更新 4 个。为什么蛋糕要验证所有 8 个字段?
  • 发布模型的验证规则和 $data 数组

标签: php cakephp


【解决方案1】:

查看this post 以获取一些提示。 这里给出了相关的。

  1. Save() 不起作用! 有时,save() 会在没有任何明显原因的情况下失败。您的数据数组看起来不错,并且您已经正确构建了表单,等等等等,但是没有执行任何查询。由于验证错误,很有可能保存失败。也许您正在更新某个模型,并且当表单中的当前字段通过验证时,有可能一些“其他字段”导致验证规则失败。查看验证情况的一种简单(且有用)的方法是在您的视图中执行pr($this->validationErrors);。通过使用这种方法,您将确切地看到模型验证发生了什么。另一个选项是将false 作为第二个参数传递给save(); 以禁用验证。但是,后一种方法没有给出太多提示,不应该用于修复失败的问题,而是故意避免验证。

  2. Save() 仍然不起作用! 您的模型或应用模型中有beforeSave(); 吗?始终仔细检查此方法,更重要的是,确保它返回 true

  3. 在创建或更新时验证 CakePHP 有一个 'on' 键可在您的 $validate 数组中使用。它允许您指定是在创建新记录期间还是在更新现有记录期间强制执行规则。例如,如果您只想在创建新用户帐户时检查唯一的电子邮件地址,您可以将'on' => 'create' 添加到您的$validate 数组中。因此,当您更新/编辑某些用户时,此规则将被忽略。

【讨论】:

  • 我觉得你需要pr($this->Post->validationErrors);
猜你喜欢
  • 2016-07-02
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 2016-05-10
相关资源
最近更新 更多