我与 TranslateBehavior 和 TreeBehavior 一起使用的模型无法保存。我怀疑这与其中一种行为有关。这是输入的数据:
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() 方法。
尽管所有字段都有红色的“错误”轮廓,但我没有在屏幕上显示任何验证错误。
编辑 - 保存操作没有达到 Category::beforeSave()。我创建了该函数,但它没有运行。它一直到 Category::beforeValidate()。
$validates = $this->Category->validates($this->request->data);
debug($validates);
$saved = $this->Category->saveAll($this->request->data);
debug($saved);
在上面的代码中,$validates
为真,$saved
为假。在上述过程中的任何时候都不会调用 Category beforeSave。调用 saveAll() 时验证似乎失败。我需要使用 saveAll 而不是 save 来一次保存所有翻译(我在其他地方使用另一个没有问题的模型执行此操作)。