2010-09-20 75 views
4

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

我被困在这里。

回答

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

+0

可证实的行为是一种替代方法和干这种使用行为的方法:http://www.dereuromark.de/2011/07/05/introducing-two-cakephp-behaviors/ – mark 2012-11-14 08:57:21

1

就个人而言,我会用JavaScript检查,提交表单前,然后才刚刚保存()在控制器再次检查。

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