2016-08-18 11 views
1

Ich benutze Symfony 3 mit Formbuilder.Symfony FormBuilder GetData

i schaffen eine EditAction einen Dienst zu bearbeiten:

/** 
* @Route("/admin/service/edit/{id}", requirements={"id": "\d+"}, name="edit_service") 
*/ 
public function EditAction($id , Request $request){ 
    $service = $this->getDoctrine() 
     ->getRepository('AppBundle:Services') 
     ->findOneById($id); 
    $form = $this->get('form.factory')->createNamedBuilder('edit_service', ServiceType::class)->getForm(); 
    $form->handleRequest($request); 
    if ($form->isSubmitted() && $form->isValid()){ 
     die("OK"): 
    } 
    return $this->render('AppBundle:Admin:EditService.html.twig', [ 
     'service'  => $service, 
     'form' => $form->createView(), 
    ]); 
} 

jetzt wird das Formular mit erstellen werden:

class ServiceType extends AbstractType{ 
     /** 
     * {@inheritdoc} 
     */ 
     public function buildForm(FormBuilderInterface $builder, array $options){ 
      $builder 
       ->add('title', TextType::class, [ 
        'attr' => ['autofocus' => true], 
        'label' => 'service.title', 
       ]) 
       ->add('text', TextareaType::class, [ 
        'attr' => [ 'pattern' => '.{10,}' , 'rows' => '10'], 
        'label' => 'service.text', 
       ]) 
       ->add('submit', SubmitType::class, [ 
        'attr' => ['class' => 'btn btn-lg btn-primary'], 
        'label' => 'submit', 
       ]) 
      ; 
     } 
     /** 
     * {@inheritdoc} 
     */ 
     public function configureOptions(OptionsResolver $resolver) 
     { 
      $resolver->setDefaults([ 
       'data_class' => Services::class, 
      ]); 
     } 
    } 

Jetzt versuche ich, den aktuellen Wert jedes Eingangs zu erhalten.

Und i "verwenden es auch einen Service hinzufügen

Diese, wie ich mit dem Zweig verwenden..

{{ form_start(form) }}{{ form_end(form) }} 

Ich versuche, verschiedene Möglichkeiten, aber kein Erfolg Dank

+0

Bitte versuchen Sie, Ihre Methoden nach Symfony-Standards zu benennen, zum Beispiel 'EditAction' sollte' editAction' sein – pavlovich

+0

danke für den tip.so immer kleiner Brief vor Aktion? –

+0

ja http://symfony.com/doc/current/contributing/code/standards.html – pavlovich

Antwort

1

$form->getData() ist eine Methode, Sie sind für suchen http://symfony.com/doc/current/forms.html

oder als @pavlovich vorgeschlagen

if ($form->isSubmitted() && $form->isValid()){ 
    die($form->get('field_name'); 
} 
+0

Weil es Form Edit ist. Ich möchte von der DB den aktuellen Wert zum Formular bringen. nicht um es zu senden –

1

Es gibt verschiedene Möglichkeiten, Eingabewert eines Formulars zu erhalten:

  • $form->getData()['your_field_name']
  • $form->get('your_field_name');
+0

Ich muss das Formular var an den Controller zurückgeben? Ich verstehe es immer noch nicht –

0

Es war einfach Ich mache nur:

$service = $this->getDoctrine() 
    ->getRepository('AppBundle:Services') 
    ->findOneById($id); 
$form = $this->get('form.factory')->createNamedBuilder('edit_service', ServiceType::class , $service)->getForm(); 
Verwandte Themen