2016-04-16 2 views
1

Я использую symfony3 с окном 7 И используя пользовательскую форму разборки. подобныйisValid() метод return false в symfony

{{ 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

Посмотрите панель инструментов веб-отладки или используйте $ 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(), 
]); 

Ошибки должны быть правильно отображены.

Смежные вопросы