与TranslateBehavior和TreeBehavior一起使用的模型未能保存。我怀疑这是与这些行为之一有关。这里的数据中去:CakePHP保存失败,但设置了验证错误但为空
array(
'Category' => array(
'id' => '3252',
'parent_id' => null,
'sort_order' => '0',
'name' => array(
'eng' => 'english name',
'fra' => 'french name',
'deu' => 'german name',
'ita' => 'italian name',
'spa' => 'spanish name'
),
)
)
而且$this->Category->validationErrors
是:
array(
'parent_id' => array(),
'sort_order' => array()
)
有模型中定义的任何验证规则。没有定义beforeSave()或beforeValidate()方法。
虽然所有字段都有红色的“错误”大纲,但我没有看到屏幕上显示任何验证错误。
编辑 - 保存操作没有达到类:: beforeSave()。我创建了这个函数,它不能运行。它得到了Category :: beforeValidate()。
$validates = $this->Category->validates($this->request->data);
debug($validates);
$saved = $this->Category->saveAll($this->request->data);
debug($saved);
在上面的代码,$validates
是真的,$saved
是假的。以上过程中的任何一点都不会调用beforeSave类别。在调用saveAll()时验证似乎失败。我需要使用saveAll而不是保存来一次保存所有翻译(我正在使用另一个模型在别的地方做这个,没有问题)。
它以失败的方式验证错误(问题显示它没有任何验证错误)? – AD7six
当我说它是“验证错误设置为空而失败”时,我的意思是validationErrors数组包含元素,但这些元素没有任何消息。很抱歉,如果不清楚,已编辑问题来澄清 – Will
一个数组的键是空的 - 仍然是空的。树的行为没有任何验证规则和验证回调,翻译行为也没有。我建议找出错误的原因(调试保存方法) - 或者至少显示一些允许重现问题的代码:P。 – AD7six