hola:
1.- si usas un framework que demoró más de 1 año y medio en quedar listo y tiene cientos de personas trabajando en él... por qué no usarlo bien? OJO con eso que haces ahí con el $_GET y luego obteniendo los parametros directamente de la superglobal. es una falla de seguridad tremenda. si quieres verificar si la consulta se hace por el metodo GET entonces usa $request->getMethod() == 'GET'. ahora que lo veo mejor, si $_GET no está definida (es posible eso?) saltará la asignacion de las variables, y lanzará un error cuando las uses en los métodos de más abajo, ya que serán 'indefinidas'. lo que puedes hacer tambien es restringir el metodo usado para llegar al controlador configurando el requerimiento en la ruta con:
requirements:
_method: GET
y asi no tendras que hacer esa comprobación. si las 2 variables necesariamente deben estar en el request, entonces deberías configurarlas en las ruta, pasarlas como parametros al controlador y asi no tendrás que hacer ese grotesco hack del if ($_GET) { .... } y estarás siguiendo la filosofía del framework.
2.- $this->get('request') cambialo por $this->getRequest(). es lo mismo, pero ya que el controller base la trae, usala. lo mismo con $this->get('doctrine.orm.entity_manager'), puedes hacer lo mismo con $this->getDoctrine()->getEntityManager();
3.- si quieres guardar un objeto en sesion, debes serializarlo/deserializarlo correctamente, de lo contrario al obtenerlo de vuelta se produciran errores. por ejemplo, si tienes algun campo privado o si el estado del objeto depende del contexto en el que se creo. para serializar correctamente debes implementar la interface http://php.net/manual/es/class.serializable.php
sin embargo, parece que es una mala práctica guardar objetos en sesion, por los mismos problemas que ya te mencioné. en ese caso, mejor guardas un array serializado con el ID de la entidad y otros parámetros adicionales.
4.- si estas usando "anon." para discriminar entre un usuario logeado y uno anónimo, te recomiendo mejor usar los roles ROLE_USER y IS_AUTHENTICATED_ANONYMOUSLY verificandolos con $this->get('security.context')->isGranted(/* ROLE */) y ya que repites 4 lineas de codigo al crear el objeto $pedidos, mejor las separas a un metodo diferente para que no se haga ese enredo que tienes ahi.
5.- no olvides agregar control de errores al buscar un objeto en la DB. esto por ejemplo:
$pedidos->setSidarticulo($em->getRepository('Eros\FrontendBundle\Entity\ProArticulo')->find($PidArticulo));
si el articulo no es encontrado no tienes espacio para devolver un error correctamente, y en setSidarticulo terminarás pasando un valor null, y quedará asi. ahora, si en la definicion de ese campo agregaste nullable=true tendrás un desorden d.p.m. en la BD (quedando varios pedidos SIN ARTICULO DEFINIDO!), y si no es nullable, te lanzará una fea excepcion PDOException diciendo que NULL no es permitido.
6.- declaras la variable $articulo y creas un objeto para ella, pero en ningun momento la usas ya que estas obteniendo el articulo directamente a través del metodo find del repository. Si haces lo del punto 5 ahi te servirá más y no ocupará espacio innecesariamente. Tambien, al final devuelves un json de un array donde pones 'items' => $items, pero en ninguna parte defines de donde sacas esos $items. lo más probable es que lance una excepcion.
Eso seria todo por ahora. no resolví del todo tu pregunta pero no me podía quedar sin guiarte en todo lo que te falta aprender del uso del framework.
saludos cordiales