2016-01-21 76 views
1

我正在創建一個名爲「agreement」的複選框。用戶必須點擊此以確認他已同意這些協議。但是,我如何將其添加到驗證?我可以從模型中做到這一點嗎?這是一個不在數據庫中的字段。如何驗證表單中的額外字段? CAKEPHP 3

在餅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?

回答

0

在模型中,您可以添加自定義修補方法,該方法將檢查request-> data中的'confirm'字段。如果它是空的,那就調用錯誤('data.confirm')。所以你的實體會有錯誤,你只需要將這個錯誤呈現給你的表單。例如:

public function customPatch($data) { 
$entity = $this->newEntity($data); 
    if (!$entity->confirm) { 
     $entity->errors('data.confirm', 'You have to...'); 
    } 
    return $entity; 
}