2016-05-24 13 views
0

Ich habe ein Symfony 2-Formular erhalten, das mit createForm erstellt wurde. Sobald das Formular validiert wurde, muss ich die ursprünglich festgelegte Aktion ändern. Ist das möglich?Ändern der Symfony-Formularaktion, sobald die Anforderung bearbeitet wurde

$formData = $this->loadData($id); 

// Form builder 
$form = $this->createForm(new ComposeForm(), $formData, [ 
    'action' => $$this->generateUrl('defaultAction') 
]); 

// Processing form 
$form->handleRequest($request); 

if ($form->isSubmitted() && $form->isValid()) { 
    $data = $form->getData(); 

    $myVar = $form->get('myVar')->isClicked(); 
    if ($myVar) { 
     // Can I change the form action here?? 
    } 
} 
+0

Warum müssen Sie dies tun? Ein Formular wird normalerweise von einer Aktion bearbeitet. – KhorneHoly

+0

Hat zwei Senden-Schaltflächen, die verschiedene Aktionen auslösen. Ich möchte das Formular in beiden Fällen per POST einreichen, so dass Umleitungen keine Option sind. –

+0

Können Sie im Detail erklären, was Sie in Ihrer Frage tun möchten? Ich schätze, dass Sie Ihrem Ziel nicht gerecht werden, aber ich kann nicht sagen, was Sie erreichen wollen. – KhorneHoly

Antwort

0

Es ist ziemlich geradlinig in einem Controller:

if ($myVar) { 
     $form->setAction($this->generateUrl('target_route')) 
    } 

aber ich nicht den Punkt sehen, dies zu tun.

+0

Versuchte das vorher, habe ich: Fataler Fehler: Aufruf zu undefinierter Methode Symfony \ Component \ Form \ Form :: setAction() –

+0

Was macht $ this-> createForm()? –

+0

Die Methode ist in der Controller-Klasse enthalten, im Grunde erstellt sie eine Formularinstanz; http://api.symfony.com/2.8/Symfony/Bundle/FrameworkBundle/Controller/Controller.html#method_createForm. Warum setAction nicht funktioniert, bin ich mir nicht sicher. –

Verwandte Themen