php - Symfony form fails isValid -
i have strange issue have not been able debug when using forms in symfony. have form working fine long time , yesterday began failing $form->isvalid() check not return errors using either $form->geterrors() or $form->geterrorsasstring(). there strange twist one, if use \doctrine\common\utils\debug::dump($request->request->get('reportsettingstype') before calling $form->isvalid() passes check. real question, how can echoing request data cause form pass validation?
i including controller action , form class reference:
/** * @route("/admin/report/build", name="build_report") * @param \symfony\component\httpfoundation\request $request */ public function generatereportaction(request $request) { $em = $this->getdoctrine()->getmanager(); $report = new \save\reportbundle\entity\report; $form = $this->createform( new \save\reportbundle\form\type\reportsettingstype, $report ); $form->handlerequest($request); //echo '<pre>'; \doctrine\common\util\debug::dump($request->request->get('reportsettingstype'), 2); echo '</pre>'; if( $form->isvalid() ){ $data = $request->request->get('reportsettingstype'); if( $data['newreport'] == 1){ $date = new \datetime(date('m/d/y', time())); $client = $em->getrepository('saveclientbundle:client')->find($data['client']); $title = strtolower(str_replace(' ', '_', $client->getname()).'_'.$date->format('m-d-y')); $report->setdate($date); $report->settitle($title); $report->setclient($client); $order = $em->getrepository('saveorderbundle:orders')->find($data['order']); $report->setorder($order); if( array_key_exists('reportfilter', $data)){ $reportfilter = $em->getrepository('saveclientbundle:clientarea')->find($data['reportfilter']); $report->setreportfilter($reportfilter); } $assessments = $this->_findassessments( $report ); if( $assessments->count() === 0 ){ $this->get('session')->getflashbag()->add('error', 'no assessments found area '.$report->getreportfilter()->getname()); return $this->render('savereportbundle:default:reporterror.html.twig', array('report' => $report)); } $report->setassessments( $assessments ); $report->settotals( $this->_calculatetotals( $report->getassessments() ) ); $report->setgrandtotals( $this->_calculategrandtotals( $report->gettotals() ) ); $report->setpossibles( $this->_calculatepossible( $report ) ); $report->setcount( $report->getassessments()->count() ); if( $report->getid() != "" && null !== $report->getid() ){ $em->merge($report); } else { $em->persist($report); } $em->flush(); $pagemaker = $this->get('page_helper'); $pagemaker->setreport($report); $pagemaker->cleanupactions(); $pagemaker->createpages(); $report = $pagemaker->getreport(); } else { $report = $em->getrepository('savereportbundle:report')->find($data['reportlist']); } $pages = $report->getpages(); $html = ''; //$html .= $report->getreportheader(); if($pages->count() > 0){ foreach($pages $page){ $html .= $page->getpageheader() . $page->getpagebody() . $page->getpagefooter(); } } //$html .= $report->getreportfooter(); return $this->render('savereportbundle:default:reportview.html.twig', array('reportdata' => $html, 'report'=>$report)); } else { //$errors = $this->geterrormessages($form); $errors = $form->geterrorsasstring(); $errors2 = $this->geterrormessages($form); die('<pre>errors: '.var_dump($errors).'</pre>'.var_dump($errors2)); } return $this->render('savecorebundle:default:debugdata.html.twig', array('data'=>array('message'=>'no data supplied'))); } form class
class reportsettingstype extends abstracttype { public function buildform(formbuilderinterface $builder, array $options) { $defaultarray = array(); for($x=0; $x<999; $x++){ $defaultarray[$x]=''; } $builder->add('client', 'entity', array( 'class'=>'save\clientbundle\entity\client', 'property'=>'name', 'label'=>'client: ', 'empty_value' => '-- select client --' )) ->add('newreport', 'choice', array( 'choices' => array( 1 => 'yes', 0 => 'no' ), 'label' => 'run new report: ', 'mapped' => false, 'expanded' => true, 'multiple' => false )) ->add('reporttype', 'choice', array( 'choices' => array( 'aggregate' => 'aggregate', 'filtered' => 'filtered' ), 'label' => 'report type: ', 'expanded' => true, 'multiple' => false, 'data' => 'aggregate' )) ->add('reportsections', 'choice', array( 'choices' => array( 'welcome letter' => 'welcome letter page', 'report details' => 'report details page', 'section definitions' => 'section definitions', 'status summary graphs' => 'status summary graphs', 'existing conditions graphs' => 'existing conditions graphs', 'engagement action plans' => 'engagement action plans', 'priority action plans' => 'priority action plans', 'employee engagement benchmarks' => 'employee engagement benchmarks', 'conclusion' => 'future discussions' ), 'label' => 'report sections: ', 'multiple' => true, 'expanded' => true, 'required' => false )) ->add('order', 'choice', array( 'label' => 'order: ', 'mapped' => false, 'choices' => $defaultarray, 'empty_value' => '--select order--' )) ->add('reportfilter', 'choice', array( 'label' => 'report filter: ', 'choices' => $defaultarray, 'required' => false, 'mapped'=> false, 'empty_value' => '-- select filter --' )) ->add('reportlist', 'choice', array( 'label' => 'saved reports: ', 'choices' => $defaultarray, 'required' => false, 'mapped' => false, 'empty_value' => '-- select report --' )) ->add('processreport', 'submit', array( 'label' => 'process report', )); } public function setdefaultoptions(optionsresolverinterface $resolver) { $resolver->setdefaults(array( 'data_class' => 'save\reportbundle\entity\report' )); } public function getparent() { return 'form'; } public function getname() { return 'reportsettingstype'; } } if there other information helpful please let me know , add question, right i'm @ loss explain why form not pass $form->isvalid() check.
Comments
Post a Comment