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

时间:2010-09-20 12:49:18

标签: validation cakephp forms

我正在创建一个带有“协议”复选框的表单。用户必须单击此以确认他已同意协议。但是如何将其添加到验证中呢?我可以从模型中做到这一点吗?这是一个不在数据库中的字段。

我被困在这里。

2 个答案:

答案 0 :(得分:2)

如果您愿意,可以手动验证该字段。

$this->Model->set($this->data['Form']['agree']);
if($this->Model->validates($this->data)){
  // okay
  $this->Model->Save();
}else{
  pr($this->Model->invalidFields());
}

或者您可以在模型中进行手动验证,这可能更好。为此,我将编写自己的验证函数,该函数检查数据是否存在并与您的表单值匹配。

http://book.cakephp.org/view/1181/Adding-your-own-Validation-Methods

答案 1 :(得分:1)

就个人而言,在提交表单之前我会用javascript检查,然后在save()之前再次检查控制器。

我的理由是协议与数据模型并不真正相关,因为它不是存储值(并且只有一个有效条件,因此验证没有意义),但是表单提交的条件。如果它是表中的列或用于生成或修改存储值,那么我可能会在模型上执行此操作。