2016-08-18 4 views
1

私はformbuilderでsymfony 3を使用しています。symfony FormBuilder GetData

私は、サービスを編集するにはEditActionを作成します。

/** 
* @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(), 
    ]); 
} 

今のフォームを使用して作成されます:

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, 
      ]); 
     } 
    } 

今私は、各入力の現在の値を取得しようとしています。

そして私サービスを追加することも、それを使用して「M

私は小枝で使用する方法この:。

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

私はさまざまな方法、 しかし、誰成功をしてみてください おかげ

+0

symfonyの標準に従ってメソッド名を指定してください。たとえば、 'EditAction'は' editAction'でなければなりません – pavlovich

+0

Actionの前にtip.soの小文字に感謝しますか? –

+0

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

答えて

1

$form->getData()は、お探しの方法です http://symfony.com/doc/current/forms.html

または@pavlovichが

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

それを編集してください。私はDBから現在の値をフォームに持ってきたい。 –

1

を示唆するように、フォームの入力値を取得するには、いくつかの異なる方法があります。

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

私はコントローラにフォームvarを返す必要がありますか?私はまだそれを取得していない –

0

それは簡単 ました私はちょうど:

$service = $this->getDoctrine() 
    ->getRepository('AppBundle:Services') 
    ->findOneById($id); 
$form = $this->get('form.factory')->createNamedBuilder('edit_service', ServiceType::class , $service)->getForm(); 
関連する問題