我想创建一个独立于实体的搜索表单,因此没有实体,并且使用FormEvents从其他地方动态加载选择字段,但无论什么总是得到$ formE-> getData()NULL

这是我的控制器代码

public function indexAction(Request $request)
    {

        $form = $this->createFormBuilder()
        ->add('Numero', TextType::class,array('required' => false,))
        ->add('FechaIngresoRango',TextType::class,array('required' =>            false,))
      ->add('Criterio', ChoiceType::class, array(
                'choices'  => array(
                        '' => '-Seleccione Opcion-',
                        'form_Numero' => 'NUMERO',
                        'form_Sector' => 'AREA',
                        'inputGroupsTema' => 'TEMA',
                        'form_FechaIngresoRango' => 'FECHA INGRESO',
            ),'required' => true))

        ->add('Sector','entity', array(
                'class' => 'AppBundle\Entity\Sector',
                'property' => 'nombre',
                'required' => false
        ))
        ->add('Tema','entity', array(
                'class' => 'AppBundle\Entity\TipoTemaExpediente',
                'property' => 'tipoTemaExpediente',
                'required' => false
        ))->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
            $formE = $event->getForm();
            $data = $event->getData();
            var_dump($data);
            {
            $em = $this->getDoctrine()->getManager();
            $tiposSubTema = $em->getRepository('AppBundle:TipoSubTemaExpediente')->findAll();

            //$tipoTema = $data->getTipoTemaExpediente();
            $formE->add('tipoSubTemaExpediente',EntityType::class,array(
                'class' => 'AppBundle:TipoSubTemaExpediente',
                'property' => 'subTemaExpediente',
                'choices' => $tiposSubTema,
            )); 
            }
            //else
            {
                //$formE->add('tipoSubTemaExpediente',ChoiceType::class, array('attr' => array('disabled' => true),));
            }
        })
        ->getForm();

        $form->handleRequest($request);

        if ($form->isValid()) {

            $data = $form->getData();
//          switch ($data['Criterio']){
//              case "form_Numero" : 
//                  var_dump($data['Numero']);
//                  break;
//              case "form_Sector" :
//                  var_dump($data['Sector']->getId());
//                  break;
//              case "inputGroupsTema" :
//                  var_dump($data['Tema']->getTipoTemaExpediente());
//                  break;
//              case "form_FechaIngresoRango" :
//                  var_dump($data['FechaIngresoRango']);
//                  break;
//          }

        }

评论是来自我做过的几个测试,在帖子上完美无缺的问题就是事件,我开始认为如果没有任何实体与表单创建有关,那么这种方式是不行的,是这样的吗?