2016-04-16 8 views
1

私はsymfony3をウィンドウ7で使用しており、カスタムフォームのレンダリングを使用しています。このようにsymfonyでisValid()メソッドがfalseを返す

{{ form_start(form,{ 'attr': {'class': 'form-horizontal','role':'form','id':'form'} }) }} 

---- form field here 

{{ form_widget(form._token) }} 
      {{ form_end(form, {'render_rest': false}) }} 



/** 
    * @Route("entity/entity/{id}", name="entity_entity",defaults={"id" = 0})  
    */ 
    public function entityAction(Request $request,$id){ 
     $action = false; 
     $arr_XYZ_data = array(); 
     $arr_XYZ_prepare_data = array();  
     $form_title = 'Add New XYZ'; 
     $obj_XYZ = new XYZ();    
     $form = $this->createForm(XYZType::class, $obj_XYZ); 
     if($id!=0){ 
      $obj_repo = $this->getDoctrine()->getRepository('AppBundle:XYZ'); 
      $arr_XYZ_data = $obj_repo->find($id);   
      if($arr_XYZ_data){ 
      $action = true; 
      $form_title = 'Update XYZ';     
      $arr_XYZ_data = $obj_repo->findXYZById($id);   
      $arr_XYZ_prepare_data = $this->_prepareData($arr_XYZ_data); 
      } 
     } 
     $form->handleRequest($request);    
     if (($form->isSubmitted())&&($form->isValid())) {   
      $obj_XYZ->setXYZId($id); 
      $str_hiddenfield_result = $form->get('extraformfield')->getData(); 
      $arr_hiddenfield_result = explode('&',$str_hiddenfield_result);  
      $obj_XYZ->setDef($obj_XYZ->getDef()->getDefId()); 
      $obj_XYZ->setAbc($arr_hiddenfield_result[3]); 
      $obj_XYZ->setAuthor(1); //ldap session value 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($obj_XYZ);   
      $em->flush();     

      $this->addFlash('success', 'Your record has been added successfully!'); 
      return $this->redirectToRoute('XYZ_index', array(), 301); 
     }else{ 
      $form->getErrors(); 
     } 
    } 

上記のコードはエラーを出力しないが、送信できません。だから私はどのように私は問題を解決することができます私に示唆することができますしてください

対応する各フォームフィールドの文字列内のすべてのエラーを取得する方法。

+0

Webデバッグツールバーをご覧になるか、$ form-> getErrors(true)を使用してください。 –

+0

あなたのエラーを明示的にelseブロックに出力する必要があります。 – habibun

答えて

1

ゲッターを呼び出すだけで何も印刷されないので、別の(印刷)機能を使用して自分で行う必要があります。

return new \Symfony\Component\HttpFoundation\Response($form->getErrors()); 

すべてのエラーを含む文字列をレンダリングします。

は、文脈に応じて、(伝統的な、AJAX、...)、あなただけのフォームので、同じように再レンダリングすることができます:

return $this->render('YourBundle:YourView.html.twig', [ 
    'form' => $form->createView(), 
]); 

エラーが正しく表示されなければなりません。

関連する問題