模型 return 我在字段上出现“_required”错误,它不是空的 Cake php 3.8

Model return me "_required" error on field that it's not empty Cake php 3.8

我使用 cakephp 3.8,我想在我的会话中保存我的实体 table 但是,模型 return 对我来说是一个我不明白的错误,因为正如你所看到的截图,我的“is_active”字段不为空,她的值为真。

这是我模型中的验证规则:

    public function validationDefault(Validator $validator)
{
    $validator
        ->integer('id')
        ->allowEmpty('id', 'create');

    $validator
        ->scalar('name')
        ->maxLength('name', 255)
        ->requirePresence('name', 'create')
        ->notEmpty('name');

    $validator
        ->boolean('is_active')
        ->requirePresence('is_active', 'create')
        ->notEmpty('is_active');

    return $validator;
}

这是我的代码:

$session = $this->Sessions->newEntity(['session_state_id' => 'OPENED', 'section_id' => $section_id, 'is_active' => true]);
$this->Sessions->patchEntity($session, $this->getRequest()->getData());
$this->Sessions->save($session);

非常感谢您的帮助,

洛伊克

您在上面修补了两次,错误是由您的第二次“patchEntity()”触发的。修复你的代码,我会说不要修补两次,或者在你的数据中包含该字段,或者调整你的验证规则。

一般来说,每次类型“创建”与“编辑”总是只修补一次。 所以在上面,你应该做的是:

$data = $this->getRequest()->getData();
$data['is_active'] = true; // add fields on top for the same marshalling.
...

$session = $this->Sessions->newEntity($data);
$result = $this->Sessions->save($session);

创建操作的备选方案(当需要用于表单构建的实体时):

$session = $this->Sessions->newEmptyEntity(); // this one doesn't patch.
$ession->is_active = true; // Add fields directly (no validation)

$data = $this->getRequest()->getData();
$data['...'] = ... // If needed for validation

$session = $this->Sessions->patchEntity($session, $data);
$result = $this->Sessions->save($session);

你的原因是: 您正在设置“创建时”规则以进行验证。 但是无论你打多少次补丁,它仍然没有被保存,所以同样的验证规则被一次又一次地触发。