模型 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);
你的原因是:
您正在设置“创建时”规则以进行验证。
但是无论你打多少次补丁,它仍然没有被保存,所以同样的验证规则被一次又一次地触发。
我使用 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);
你的原因是: 您正在设置“创建时”规则以进行验证。 但是无论你打多少次补丁,它仍然没有被保存,所以同样的验证规则被一次又一次地触发。