2012-05-03 11 views
1

有効にする前に、メッセージを表示して保存を中止するには、コントローラに何を追加しますか?cakePHPの検証はどのように機能しますか?

public function add() { 


    if ($this->request->is('post')) { 

     var_dump($this->request->data); 
     $this->Rsvp->set('uname', $this->request->data['Post']['name']); 
     $this->Rsvp->set('uemail', $this->request->data['Post']['emailaddress']);   
      //Begin Validation Routine 
     echo 'Validation'; 
     var_dump($this->Rsvp->validates); 


     $this->Rsvp->save();  
     /*if($this->Rsvp->save()) { 
      $this->Session->setFlash('You have RSVP for the event'); 
      // $this->redirect(array('action' => 'index'));    
     } 
     else { 
      $this->Session->setFlash('Unable to RSVP you for the event.'); 
     }*/ 
    } 
} 

答えて

2

class Rsvp extends AppModel { 
var $name = 'Rsvp'; 
var $validate = array(
       'uname' => array(
           'rule' => array('alphaNumeric', true), 
           'message' => 'Please enter a vlaid name that does not contain digits'), 
       'uemail' => array(
           'rule' => array('email', true), 
           'message' => 'Please supply a valid email address.') 


); 

} 

コントローラは、あなたが何かを意味しています:デフォルトでは

if($this->Rsvp->validates()) { 
    //data validated, so save 
    $this->Rsvp->save($this->data);  
} 
else { 
    $this->Session->setFlash(__('Fill in all required fields.', true)); 
} 
0

を、Model::save()方法が自動的に検証します。だから、検証が保存しようとするだけで行われている:あなたが検証したくない場合は、

$this->Rsvp->save($this->request->data, array('validate' => false)); 

最後を使用

if ($this->request->is('post')) { 
    if ($this->Rsvp->save($this->request->data)) { 
    // validated and saved to db 
    } else { 
    // didn't validate or failed saving to db 
    } 
} 

、データを手動で設定してvalidates()方法を実行することによって検証することができます。それは検証しない場合は

$this->Rsvp->set('uname', $this->request->data['Post']['name']); 
$this->Rsvp->set('uemail', $this->request->data['Post']['emailaddress']); 
$validates = $this->Rsvp->validates(); 

、それはその後、$this->Rsvp->validationErrorsを設定し、コントローラ上でそれを設定し、フォームヘルパーは、これらのエラーを認識し、自動的にあなたのためにそれらが表示されますされます。

データとデータ検証の保存については、http://book.cakephp.org/2.0/en/models/saving-your-data.html

関連する問題