2013-06-05 60 views
1

我正在嘗試爲我的表單實施x-editable。爲此,需要找到一種方法來更新單一財產基礎上的實體。這給我的最大麻煩是如何驗證單個數據的方式。據我的理解,setValidationGroup()似乎沒有工作(或者我這樣做是完全錯誤的)。下面是我的嘗試:單個字段的AJAX表單更新

if ($request->isPost()) { 
    $form->setData($request->getPost()); 
    if($request->isXmlHttpRequest()) { 
     $filters = $form->getInputFilter(); 
     $filters->setValidationGroup(
      $this->params()->fromPost('name') 
     ); 
     $form->setInputFilter($filters); 
    } 
    if ($form->isValid()) { 
     $objectManager->flush(); 
     if ($request->isXmlHttpRequest()) { 
      $response = $this->getResponse(); 
      $response->setStatusCode(Response::STATUS_CODE_200); 

      return $response; 
     } 
    } else { 
     $errors = $form->getMessages(); 
     \Zend\Debug\Debug::dump($errors); 
     die("notvalid"); 
    } 
} 

isXmlHttpReqiest的檢查服務的#1目的來縮小審定組只是一個元素和#2發出與x軸工作,具體的反應jQuery的可編輯插件。

當前錯誤:所有的FormFields都經過驗證。我收到一個錯誤消息,其中有兩個必填字段,它們的isEmpty -Validator被調用。

回答

1

我想你打電話setValidationGroup是錯誤的山姆的方式,這是一個形式的方法,你給它的字段名稱的數組

if($request->isXmlHttpRequest()) { 
    $form->setValidationGroup(array(
     'name', 
    )); 
} 
+1

其實事實並非如此。你有兩種定義組的方法,一種是數組,另一種是數字或字符串參數'setValidationGroupd('eOne','eTwo','eN')' – Sam

+1

是的,我的主旨是更多地使用形式方法,而不是到輸入過濾器之一,而不是實際的參數格式,但我從答案中看到它沒有任何區別。 – Crisp

+0

啊,是的,你是真的,沒有真正注意到這一點。最後一個例子也使用了你剛纔提到的形式! – Sam

1

溶液

學習嚇壞正確設置你的inputFilters。我不知道爲什麼我沒有得到任何解析錯誤,但在獲取正確的inputFilters時出現字符串錯誤,所以實際上根本沒有附加inputFilter。

由於表單具有有效的默認數據,因此在驗證單個元素時僅發生錯誤。

精華

開始編寫單元測試....