I have this code in my controller:
/**
* @Secure(roles="IS_AUTHENTICATED_FULLY")
* @Route("/rpni/registro/producto/1/guardar", name="productoGuardarPasoUno")
* @Method("POST")
*/
public function guardarPaso1Action(Request $request)
{
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$response['success'] = false;
$status = 400;
if ($request->isXmlHttpRequest()) {
$productoSolicitudRequest = $request->request->get('productoSolicitud');
$entProductoSolicitud = $em->getRepository("AppBundle:ProductoSolicitud")->find($session->get('productoSolicitudId'));
$entProducto = $em->getRepository("AppBundle:Producto")->find($productoSolicitudRequest['producto']['nombre']);
$entCondicionProducto = $em->getRepository("AppBundle:CondicionProducto")->find($productoSolicitudRequest['condicion_producto']);
$entFinalidadProducto = $em->getRepository("AppBundle:FinalidadProducto")->find($productoSolicitudRequest['finalidad_producto']);
$entProcedenciaProducto = $em->getRepository("AppBundle:ProcedenciaProducto")->find($productoSolicitudRequest['procedencia_producto']);
$entSolicitudUsuario = $em->getRepository("AppBundle:SolicitudUsuario")->find($session->get('solicitudUsuarioId'));
if ($entProductoSolicitud)
{
$entProductoSolicitud->setProducto($entProducto);
$entProductoSolicitud->setCondicionProducto($entCondicionProducto);
$entProductoSolicitud->setFinalidadProducto($entFinalidadProducto);
$entProductoSolicitud->setProcedenciaProducto($entProcedenciaProducto);
$entProductoSolicitud->setSolicitudUsuario($entSolicitudUsuario);
try {
$em->flush();
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
return new JsonResponse($response, $status);
}
} else {
$newEntProductoSolicitud = new Entity\ProductoSolicitud();
$formProductoSolicitud = $this->createForm(new Form\ProductoSolicitudForm(), $newEntProductoSolicitud);
if ($formProductoSolicitud->isValid())
{
try {
$em->persist($newEntProductoSolicitud);
$em->flush();
$session->set('productoSolicitudId', $newEntProductoSolicitud->getId());
$session->set('productoId', $entProducto->getId());
$response['success'] = true;
// Debug: remover cuando se termine el Bundle
$response['productoSolicitudId'] = $session->get('productoSolicitudId');
$response['productoId'] = $session->get('productoId');
$status = 200;
} catch (Exception $ex) {
$response['error'] = $ex->getMessage();
return new JsonResponse($response, $status);
}
} else {
$response['error'] = $this->get('translator')->trans('formularioNoValido');
$response['formError'] = $this->getFormErrors($formProductoSolicitud);
return new JsonResponse($response, $status);
}
}
return new JsonResponse($response, $status);
}
}
Which I'm trying to use for create and for update purposes. When I send the form through Ajax I get this response from Symfony2:
{
"success":false,
"error":"formularioNoValido",
"formError":{
"producto":{
"nombre":[
]
},
"lote":[
],
"procedencia_producto":[
],
"finalidad_producto":[
],
"condicion_producto":[
]
}
}
And nothing else to give me a clue. The weird part is that checking Post tab in Firebug give me this output:
Parameters application/x-www-form-urlencodedDo not sort
productoSolicitud[_token] wC_MAeVs7ZAGSpkvLYux6RKrLq46aivxXxiCZr6pNeU
productoSolicitud[condici... 1
productoSolicitud[finalid... 1
productoSolicitud[lote] 11
productoSolicitud[procede... 1
productoSolicitud[product... 4
Source
productoSolicitud%5Bproducto%5D%5Bnombre%5D=4&productoSolicitud%5Bprocedencia_producto%5D=1&productoSolicitud%5Bfinalidad_producto%5D=1&productoSolicitud%5Bcondicion_producto%5D=1&productoSolicitud%5Blote%5D=11&productoSolicitud%5B_token%5D=wC_MAeVs7ZAGSpkvLYux6RKrLq46aivxXxiCZr6pNeU
See the image below:
So, where the error is? Why form is not valid? Any clue? Advise?