我想创建一个独立于实体的搜索表单,因此没有实体,并且使用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;
// }
}
评论来自我做过的几个测试,在帖子上完美无缺地问题就是事件,我开始认为如果没有任何实体与表单创建相关,那就不可能了去上班,是这样吗?