Symfony FormBuilder GetData

Symfony FormBuilder GetData,symfony,symfony-forms,Symfony,Symfony Forms,我在formbuilder中使用symfony 3 我创建一个EditAction来编辑服务: /** * @Route("/admin/service/edit/{id}", requirements={"id": "\d+"}, name="edit_service") */ public function EditAction($id , Request $request){ $service = $this->getDoctrine() ->ge

我在formbuilder中使用symfony 3

我创建一个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,
            ]);
        }
    }
现在我试图得到每个输入的当前值

我还用它来添加服务

这是我使用树枝的方式:

{{ form_start(form) }}{{ form_end(form) }}
我尝试不同的方法, 但是没有成功。 谢谢

$form->getData()
是您正在寻找的一种方法

或者像@pavlovich建议的那样

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

有几种不同的方法可以获取表单的输入值:

  • $form->getData()['your\u field\u name']
  • $form->get('your_field_name');
  • 这很简单 我只是:

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

    请尝试根据Symfony标准命名您的方法,例如
    EditAction
    应该是
    EditAction
    ,谢谢您的提示。所以在操作之前一定要用小写字母?是的,我需要将表单变量返回给控制器?我仍然没有得到它,因为它是表单编辑。我想从DB将当前值带入表单。不是o发送它
    $service = $this->getDoctrine()
        ->getRepository('AppBundle:Services')
        ->findOneById($id);
    $form = $this->get('form.factory')->createNamedBuilder('edit_service', ServiceType::class , $service)->getForm();