我正在创建一个带有“协议”复选框的表单。用户必须单击此以确认他已同意协议。但是如何将其添加到验证中呢?我可以从模型中做到这一点吗?这是一个不在数据库中的字段。
我被困在这里。
答案 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()之前再次检查控制器。
我的理由是协议与数据模型并不真正相关,因为它不是存储值(并且只有一个有效条件,因此验证没有意义),但是表单提交的条件。如果它是表中的列或用于生成或修改存储值,那么我可能会在模型上执行此操作。