如何验证表单中的额外字段? CAKEPHP 3

时间:2016-01-21 16:02:34

标签: cakephp-3.0

我正在创建一个带有一个名为" 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中做到这一点?

1 个答案:

答案 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;
}