-1

我使用 CakePHP2.7.5,我的模型save函数失败了,因为它试图验证参数中未指定的$fieldList字段。

根据Cookbooksave方法将$fieldList作为第三个参数将保存的字段限制为$fieldList.

Model::save(array $data = null, boolean $validate = true, array $fieldList = array())

我这样调用save模型:

$this->save($data, true, ['name', 'place']);

$data 是这样的:

[ 'ModelName' => [ 'id' => $id, 'name' => 'abcdef', 'place' => 'ghijklmn' ] ]

但它失败了,因为验证错误发生在$data. 它应该以这种方式工作吗?

我是否必须$data为必填字段输入一些虚拟数据?

4

2 回答 2

0

我自己找到了答案。在 Cake 的Model::save函数中,第二个参数$validate可以是一个数组,只有当它是一个数组时才会出现这个问题。(因此,我在上述问题中的示例不准确。)

因此,这应该按预期工作(仅验证和保存“名称”和“地点”),

$this->save($data, true, ['name', 'place']);

但是这个没有

$this->save($data, ['validate' => true], ['name', 'place']);

实际上我就是这样做的。(因为我不得不将“原子”设为假,这就是如何做到的。)

$this->save($data, ['validate' => true, 'atomic' => false], ['name', 'place']);

就我而言,这就是解决方案。

$this->save($data, ['validate' => true, 'atomic' => false, 'fieldList' => ['name', 'place']);
于 2015-12-05T22:06:58.753 回答
0

您可能需要在验证规则中将required设置为 false:

public $validate = array(
    'description' => array(
        'alphaNumeric' => array(
            'rule' => 'alphaNumeric',
            'required' => false,
            'message' => 'You have to enter a valid description'
        )
);

}

CakePHP 2.x 验证:'必需'

于 2015-11-30T09:34:53.227 回答