2016-07-25 19 views
2

Ich möchte bereits Fehler eines Formulars zeigen, bevor das Formular abgeschickt wird. Ich habe Formulare, in denen die Datenbankdaten unvollständig sind, also möchte ich zeigen, was bereits fehlt, bevor sie versuchen, es zu speichern.Formularüberprüfung vor dem Beitrag

Allerdings wird $ form-> isValid() nur ausgeführt, wenn das Formular auch gesendet wird (was nur bei Post passiert).

Ich habe versucht, den Validator, aber das gibt mir eine Liste von Fehlern, ohne sie zum Formular hinzufügen und es scheint eine schlechte Arbeit um, wenn ich das selbst, aber ich konnte nicht herausfinden, wie die Quelle dies erreichen.

$form = $this->get('form.factory')->create(SchoolFormType::class, $school, $formOptions); 
$form->handleRequest($request); 
if ($form->isValid()) { 
    // ... 
} 

Antwort

1

Sie simulieren kann ein vorlegen mit:

$form->handleRequest($request); 

$wasSubmitted = $form->isSubmitted(); 

if(!$wasSubmitted){ 
    $form->submit($form->getData(),false); 
} 

if ($form->isValid()) { 
    // ... 

    // next lines are to be sure that the form will always need to be submitted manualy : 
    if($wasSubmitted){ 
     $em->persist($entity); 
     $em->flush(); 

     return $this->render ... 
    } 
} 

return $this->render ... 

die Methode in der source code einreichen See.

+1

Vielen Dank! Ich habe versucht $ form-> submit (null, falsch); aber es gab mir einen csrf-Fehler und ich war mir nicht sicher, wie ich es replizieren sollte. Klappt wunderbar! – tmas