2012-05-10 42 views
1

我有一個簡單的表單,我不使用實體類。即使使用空值/無效值,表格總是通過驗證

後我想驗證使用驗證器的值,但即使值爲空或無效,錯誤列表的計數始終爲零。

這裏是(或多或少),我執行的代碼:

use Symfony\Component\Validator\Constraints\Email; 
    use Symfony\Component\Validator\Constraints\MinLength; 
    use Symfony\Component\Validator\Constraints\Collection; 


    public function formAction(){ 
     $collectionConstraint = new Collection(array(
      'name' => array(new MinLength(5)), 
      'email' => array(new Email(array('message' => 'Invalid email address'))), 
     )); 

     $options = array('validation_constraint' => $collectionConstraint); 
     $form = $this->createFormBuilder(null, $options) 
       ->add('name', 'text', array('label' => '', 'attr' => array('placeholder' => 'Your name'))) 
       ->add('email', 'email', array('label' => '', 'attr' => array('placeholder' => 'E-mail'))) 
       ->getForm(); 

     $request = $this->getRequest(); 
     $error = false; 
     if ($request->getMethod() == 'POST') { 
      $form->bindRequest($request); 

      if ($form->isValid()) { 
       $data  = $form->getData(); 
       $errorList = $this->get('validator')->validateValue($data, $collectionConstraint); 

       // count($errorList) is always zero even when the values are empty or invalid… 
      } 
      else { 
       $error = true; 
      } 
     } 

     // ... snip ... 
    } 

回答

0

我會說,因爲你算元素的數量$errorList一個測試,告訴表單有效裏面這是正常的。所以我會說,當表單有效時,它會顯示0,當它不是時,它不會顯示任何內容。

您不需要手動運行驗證,因爲它已由$form->isValid()語句執行。

如果要計算髮生約束違規的次數,請在致電$form->isValid()後運行count($form->getErrors())

最後,如果尚未完成,您應該首先閱讀http://symfony.com/doc/current/book/forms.html#using-a-form-without-a-class

乾杯

+0

是的,我已經知道了,沒有錯誤。 我的問題是爲什麼它不按預期工作。 它應該引發錯誤,如果有一個無效的電子郵件或字段設置爲空,當提交它不是... 我之前提交這個問題的鏈接。 – cristobal

相關問題