如何解决发送到规则检查器的实体不包括所有字段
在我的控制器中,我要保存一个密码实体,然后在保存之前更新该实体中的日期字段。我创建了一个验证规则作为应用程序规则,如此处https://book.cakephp.org/4/en/orm/validation.html#using-validation-as-application-rules所述,用于在使用自定义功能修改实体后验证该实体。
不幸的是,它两次验证。上一次修补后,第一次按预期方式工作,但是第二次失败,因为所有字段均未包含在发送给ruleschecker的实体中。实体中发送给ruleschecker的唯一字段是我最近更新的两个日期字段。如何将实体中的所有字段重新发送到ruleschecker?或强行将修补性验证中的错误显示在保存时。
CONTROLLER
$password = $this->Passwords->patchEntity($password,$this->request->getData());
// Convert Dates to SQL format
$password->effective_on = strftime('%Y-%m-%d %H:%M:%S',strtotime($this->request->getData('effective_on')));
$password->effective_until = strftime('%Y-%m-%d %H:%M:%S',strtotime($this->request->getData('effective_until')));
if (! $this->Passwords->save($password)) {
...
规则
public function buildRules(RulesChecker $rules): RulesChecker
{
$rules->add($rules->existsIn(['user_id'],'Users'));
$rules->add($rules->existsIn(['environment_id'],'Environments'));
$rules->add($rules->existsIn(['rule_type_id'],'RuleTypes'));
// Add validation rules
$rules->add(function($entity) {
$data = $entity->extract($this->getSchema()->columns(),true);
$validator = $this->getValidator('default');
$errors = $validator->validate($data,$entity->isNew());
$entity->setErrors($errors);
return empty($errors);
});
return $rules;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。