Saludos,Estoy creando un sistema de encuestas y tengo un problema cuando intento crear un formulario que admita varias respuestas para la misma pregunta, intento enviar los datos de una consulta como opciones para un formulario de tipo ChoiceType sin embargo no me permite crear el formulario por que dice que "$options" no es un array: (simplifiqué el código para hacerlo entendible)
$options= $em->createQuery('SELECT u.nombre FROM AppBundle:Opciones u')->getResult(); $form = $this->createFormBuilder($respuesta) ->add('Respuestas', ChoiceType::class,array( 'choices'=>$options, 'choice_value'=>'cDetAlt', 'multiple'=>true, )) ->add('grabar',SubmitType::class) ->getForm();
El tema es que necesito que se puedan escoger varias opciones , de otro modo usaría el EntityType usando la clase "AppBundle:Opciones" y mi campo 'Respuestas' es de tipo array. Si alguien me puede recomendar una mejor forma de hacerlo estaría muy agradecido.
Respuestas
Como dice el error, la opción $options
que pasas al form type tiene que ser un array ... y el resultado de Doctrine no es un array normal por defecto.
La solución sería decirle a Doctrine que te devuelva un array normal. Para ello, tienes que pasar un parámetro al método getResult()
:
$options = $em->createQuery('SELECT u.nombre FROM AppBundle:Opciones u')->getResult(Query::HYDRATE_ARRAY);
En este documento tienes más información sobre este tema.
@javiereguiluz
Gracias por responder, ahora me da otro problema. Uso este código para no tener de valor un entero:
foreach($options as $opcion){ $opciones[]=array($opcion=>$opcion); }
Sin embargo me genera opciones agrupadas:
@rolando18285963