2010-09-20 88 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檢查,提交表單前,然後纔剛剛保存()在控制器再次檢查。

我的推理是,協議與數據模型並不真正相關,因爲它不是一個存儲值(並且只有一個有效條件,所以驗證沒有意義),但是是表單提交的一個條件。如果它是表格中的一列或用於生成或修改存儲值,那麼我可能會在模型上執行此操作。