2016-10-12 2 views
1

Da ich an Laravel gewöhnt bin, habe ich versucht, Formulare in einer separaten Methode zu validieren. Aber ich weiß nicht, wie ich zurück umleiten und die Fehler anzeigen kann. Das Hauptproblem ist die Anzeige der Fehler. Am besten wäre es, wenn ich die Fehler von der Validierungsmethode aus festlegen und das Standard-Formularfehler-Rendering in Symfony übernehmen könnte.Symfony Anzeige Formularfehler von Validierungsmethode

Ich könnte völlig falsch mit meinem Ansatz sein, wenn ja, ich hoffe, jemand könnte mich in die richtige Richtung führen.

machte ich eine Methode, um die Form zu erstellen und machen es in Zweig

/** 
* @Route("/form") 
* @Template("Bundle::form.html.twig") 
* @Method("GET") 
*/ 
public function formAction(Request $request) 
{ 
    $state = new State(); 

    $form = $this->createFormBuilder($state) 
     ->add('name', TextType::class) 
     ->add('save', SubmitType::class, array('label' => 'Submit')) 
     ->getForm(); 

    return [ 
     'form' => $form->createView(), 
    ]; 
} 

und ein anderes Verfahren, das Formular zu validieren und Umleitung zurück auf Fehler

/** 
* @Route("/form") 
* @Method("POST") 
*/ 
public function formAction(Request $request) 
{ 
    $state = new State(); 

    $form = $this->createFormBuilder($state) 
     ->add('name', TextType::class) 
     ->add('save', SubmitType::class, array('label' => 'Submit')) 
     ->getForm(); 

    $form->handleRequest($request); 

    if ($form->isSubmitted()) { 
     if (!$form->isValid()) { 
      // How to pass errors? 
      return $this->redirectTo('/form'); 
     } 

     // ... Store State 
    } 

    // ... 
} 
+0

In Symfony wird das Anzeigen, Validieren und Speichern eines Formulars normalerweise in nur einer Aktion ausgeführt. –

+0

Sie haben den gleichen Code zweimal, außer für den 'isValid()' Teil. Mach alles in einer Aktion. Wie hier: http://symfony.com/doc/2.8/forms.html#handling-form-submissions –

Antwort

0

1) Überprüfen Sie this out

2) Wenn Sie wirklich einen Fehler von Ihrem Controller hinzufügen möchten:

use Symfony\Component\Form\FormError; 
// ... 
$form->get('name')->addError(new FormError('Wrong name you fool :p')); 
Verwandte Themen