Si, desde Chrome borre todos los datos de navegación para asegurarme.
Yo creo que me sale por el propio contrrolador, lo raro es que si desde Twig le pongo value null, no se por que no me lo respeta.
Código:
public function perfilAction()
{
$peticion = $this->getRequest();
$usuario = $this->get('security.context')->getToken()->getUser();
$formulario = $this->createForm(new UsuarioPerfilType(), $usuario);
$passwordOriginal = $formulario->getData()->getPassword();
$formulario->handleRequest($peticion);
if ($formulario->isValid()) {
// Si el usuario no ha cambiado el password, su valor es null después de hacer el getRequest(),
// por lo que hay que recuperar el valor $passwordOriginal
if (null == $usuario->getPassword()) {
$usuario->setPassword($passwordOriginal);
// Si el usuario ha cambiado su password, hay que codificarlo antes de guardarlo
} else {
$encoder = $this->get('security.encoder_factory')->getEncoder($usuario);
$passwordCodificado = $encoder->encodePassword($usuario->getPassword(),$usuario->getSalt());
$usuario->setPassword($passwordCodificado);
}
$em = $this->getDoctrine()->getManager();
$em->persist($usuario);
$em->flush();
$this->get('session')->getFlashBag()->add('info', 'Los datos de tu perfil se han actualizado correctamente');
return $this->redirect($this->generateUrl('compras'));
}
return $this->render('UsuariosBundle:Default:perfil.html.twig', array(
'usuario' => $usuario,
'formulario' => $formulario->createView()
));
}