Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Error al filtrar datos por formulario (SF2.1)

20 de enero de 2015

Hola

Mi situación: estoy utilizando el bundle LexikFormFilterBundle para filtrar datos.

Tengo una relación entre empleado y cargo, donde un cargo tiene cero o muchos empleados asignados.

El campo del filtro:

->add('cargo', 'filter_entity', array(
       'class' => 'PersonalBundle:Cargo',
       'property' => 'nombre',
       'query_builder' => function (\Doctrine\ORM\EntityRepository $repository) {
            return $repository
                ->createQueryBuilder('c')
                ->join('c.empleados', 'p')  
                ->add('groupBy', 'c.nombre')
            ;
        }
))

Al filtrar por una entidad, me arroja varios errores, el principal es este:

Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::serialize()
must return a string or NULL

Realicé un seguimiento, para saber donde se produce el error:

1) Ingrese a la ruta. (OK) 2) La función de filtrado devolvió todos los registros (OK). 3) Me devuelve

list($filterForm, $queryBuilder) = $this->filter(); // formulario y la consulta. (OK)

4) Crea formulario: $filterForm->createView() (OK) 5) Carga plantilla. (OK)

return $this->render('PersonalBundle:CCTV:index.html.twig', array(                    
    'entities'   => $entities, // datos a partir de $queryBuilder
    'filterForm' => $filterForm->createView(), 
));

6) Realizo el filtro por el cargo.

7) Los pasos 1 a 4 se procesan correctamente, pero al cargar la plantilla arroja el error mencionado.

Yo creo que el error está en el filterForm que pasa a la plantilla:

<form action="{{ path('ruta') }}" method="post" {{ form_enctype(filterForm) }}>

¿Me podrían orientar?

PD: lo raro que tengo filtros igual y no se produce el error.


Respuestas

#1

Al utilizar una versión de Symfony tan antigua, es posible que se trate de un error que ya se corrigió en las versiones más recientes que todavía se mantienen.

En cualquier caso, mi pregunta sería, ¿las propiedades de tus entidades de Doctrine son private? En caso de que lo sean, ¿puedes probar a cambiarlas por protected? Es posible que estés guardando en la sesión información y al ser las propiedades private el serializador que utiliza la sesión no puede acceder a ellas.

Si no se arregla el problema, indícanos si puedes todos los errores que se producen, ya que podríamos estar buscando algo que no tiene nada que ver con el error real que se está produciendo.

@javiereguiluz

21 enero 2015, 9:30
#2

Hice el cambio, y me arroja el mismo error.

Como mencione solo sucede con la entidad personal y con la relación con la entidad cargo.

Por que, tengo otra relacion similar con otra entidad y funciona el filtro.

@dariongg

21 enero 2015, 13:54