我正在创建一个带有一个名为" agreement"的复选框的表单。用户必须单击此以确认他已同意协议。但是如何将其添加到验证中呢?我可以从模型中做到这一点吗?这是一个不在数据库中的字段。
在蛋糕2.0中,我可以这样做:
$this->Model->set($this->data['Form']['agree']);
if($this->Model->validates($this->data)){
// okay
$this->Model->Save();
}else{
pr($this->Model->invalidFields());
}
如何在cakephp 3中做到这一点?
答案 0 :(得分:0)
在模型中,您可以添加自定义补丁方法,该方法将检查request->数据中的“确认”字段。如果它是空的那么只是调用错误('data.confirm')。因此,您的实体将出现错误,您只需将此错误呈现给您的表单。类似的东西:
public function customPatch($data) {
$entity = $this->newEntity($data);
if (!$entity->confirm) {
$entity->errors('data.confirm', 'You have to...');
}
return $entity;
}