2012-08-08 29 views
1

我不確定爲什麼我繼續接收所有錯誤而不是無效字段,即使我正確填寫了一些必填字段。使用CakePHP ajax視圖驗證ajax請求將返回所有字段始終無效,而不是正確的

提交控制器:

public function submit() { 
    $this->set('title_for_layout', 'Submit - '); 

    if ($this->request->is('ajax')) { 
     if (!empty($this->request->data)) { 
      $this->Submission->set($this->request->data); 
      if ($this->Submission->invalidFields($this->request->data)) { 
       $formErrors = $this->Submission->validationErrors; 
      } else { 
       $formErrors = null; 
      } 
     } else { 
      $formErrors = null; 
     } 

     $this->set(compact('formErrors')); 

}

/Submissions/json/submit.ctp:

<?php 

$toReturn = array(
    'formErrors' => $formErrors 
); 

echo json_encode($toReturn); 

提交模型:

var $validate = array(
    'title' => array(
     'title' => array(
      'rule' => 'notEmpty', 
      'required' => true, 
      'allowEmpty' => false, 
      'message' => 'Please enter a title' 
     ), 
     'minLength' => array(
      'rule' => array('minLength', 5), 
      'message' => 'Please make your title longer (e.g. IJL John F. Kennedy donated his presidential salary to charity)' 
     ), 
     'maxLength' => array(
      'rule' => array('maxLength', 300), 
      'message' => 'Your title needs to be shorter' 
     ), 
    ), 
    'description' => array(
     'shortDescription' => array(
      'rule' => array('shortDescription'), 
      'message' => 'Your description needs to be longer' 
     ), 
     'longDescription' => array(
      'rule' => array('longDescription'), 
      'message' => 'Your description needs to be shorter' 
     ), 
    ), 
    'source' => array(
     'source' => array(
      'rule' => 'notEmpty', 
      'required' => true, 
      'allowEmpty' => false, 
      'message' => 'Enter a valid source URL (e.g. http://en.wikipedia.org/wiki/Penguins)' 
     ), 
     'website' => array(
      'rule' => 'url', 
      'message' => 'Enter a valid source URL (e.g. http://en.wikipedia.org/wiki/Penguins)' 
     ), 
    ), 
    'category' => array(
     'category' => array(
      'rule' => 'notEmpty', 
      'required' => true, 
      'allowEmpty' => false, 
      'message' => 'Please choose a category' 
     ) 
    ) 
); 

形成價值觀被越來越斯里alized並派:

form values

錯誤我得到一個JSON響應:

enter image description here

揪頭髮出在這裏:|

+0

你可以嘗試做那沒有ajax,它會是同樣的錯誤? – 2012-08-08 10:10:16

回答

1

你好像有點兒糊塗了用於驗證()和invalidFields()

invalidFields()一個用於驗證(後返回無效字段),請參閱:http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html

所以,你的代碼看起來應該是這樣的:

$this->Submission->set($this->request->data); 
if (!$this->Submission->validates()) { 
    $formErrors = $this->Submission->invalidFields(); 
} else { 
    $formErrors = null; 
} 
+0

由於某些原因,現在每個字段都會給我發送雙重錯誤,並且仍然給我帶來同樣的問題:\ http://i.imgur.com/mZLV7.png – 2012-08-08 17:41:53

0

首先,數據集模型:

$this->ModelName->set($this->request->data); 

然後,要檢查數據驗證,使用該模型,如果它證明和假,這將返回true的只會驗證方法,如果它不:

if ($this->ModelName->validates()) { 
    // it validated logic 
} else { 
    // didn't validate logic 
    $errors = $this->ModelName->validationErrors; 
} 

Validating Data from the Controller