2017-02-23 4 views
1

Ich fühle mich irgendwie dumm hier, weil ich einige komplexe Sachen in symfony 3 gemacht habe, aber ich weiß nicht, da ist etwas einfaches, dass ich vermisse, wenn es versucht also nur einfache Aufgaben.Daten in Array mit einem Formular mit Symfony 3

Das sollte ziemlich einfach sein, aber ich kann es nicht schaffen zu arbeiten.

Das Abrufen von Daten aus einer Anforderung in get-Methode ist ziemlich einfach. Mit "request-> query ('param')" ist es genug.

Aber ich möchte ein indiziertes Array mit diesen Parametern mithilfe eines Formulartyps oder eines Formulars erstellen und den Vorteil nutzen, dass Daten automatisch in den richtigen Typ konvertiert werden.

Ich habe dieses Array:

$booking = ['dateIn' => null, 'dateOut' => null] 

Und diese Form

$form = $this->createFormBuilder($booking, ['csrf_protection' => false]) 
      ->setMethod('GET') 
      ->add('dateIn', TextType::class) 
      ->add('dateOut', TextType::class) 
      ->getForm(); 

Wenn ich die Daten-Dump nach

„/ Buch Aufruf datein = xxxx & dateOut = xxxxx? "

$form->handleRequest($request);  
$form->getData(); 

Es ist immer noch

['dateIn' => null, 'dateOut' => null] 

I Texttype statt Datetype verwendet es einfach zu machen und andere Probleme verwerfen, wenn diese Sache zu testen. Aber mein Ziel ist es, auch diese Params zu konvertieren.

Was ist los? Sollte ich es "einfacher" machen (Formulare vermeiden) oder eine echte Buchungsklasse etc. verwenden, möchte ich keine Sicherheitsprobleme verwenden, da ich sie hier nicht brauche.

Danke!

Antwort

1

Der Name Standardformular ist form so das ich das mit params wie funktionieren sollte:

/Buch [form] datein = xxxx & [form] dateOut = xxxxx

Sie können ändern Sie den Formularnamen mit den formFactory Dienste, wie zB:

$form = $this->get('form.factory')->createNamedBuilder('','Symfony\Component\Form\Extension\Core\Type\FormType', $booking, ['csrf_protection' => false]) 
      ->setMethod('GET') 
      ->add('dateIn', TextType::class) 
      ->add('dateOut', TextType::class) 
      ->getForm(); 

Oder ein klassisches Formulartyp erstellen und implementieren, die getBlockPrefix Methode und geben Sie eine leere Zeichenfolge zurück.

Hoffe diese Hilfe

+0

Danke !! der formname !!! Da ich immer Post oder Json gekapselte Daten verwenden, um Daten an die Controller zu senden, habe ich dieses einfache, aber wichtige Detail nicht bemerkt. –

Verwandte Themen