/ / Cómo obtener la instancia de Entity Manager en FOSUserBundle Controller - symfony, symfony-2.3

Cómo obtener la instancia del administrador de entidades en FOSUserBundle Controller - symfony, symfony-2.3

Estoy usando FOSUserBundle en Symfony 2.3, creé una tabla adicional para almacenar el perfil de usuario, en algún momento, necesito acceder al administrador de la entidad para persistir y vaciar los datos que provienen del formulario de perfil a la tabla de perfil, pero tengo problemas para intentar obtener un instancia del administrador de la entidad.

¿Alguna idea?

¡Gracias!

Respuestas

2 para la respuesta № 1

Para editar los perfiles de los usuarios que usan FOSUserBundle, debe crear un nuevo ProfileController que extienda el ProfileController de FOSUserBundle.

Aquí ahora puede anular los métodos de FOSUserBundle.

Un ejemplo de inicio:

<?php

/*
* This file is part of the FOSUserBundle package.
*
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace AcmeUserBundleController;

use FOSUserBundleModelUserInterface;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationRedirectResponse;
use SymfonyComponentSecurityCoreExceptionAccessDeniedException;
use FOSUserBundleControllerProfileController as BaseController;

/**
* Controller managing the user profile
*
* @author Christophe Coevoet <stof@notk.org>
*/
class ProfileController extends BaseController
{
public function editAction()
{
$em = $this->container->get("doctrine")->getManager();
// your code here
}
}

2 para la respuesta № 2

Puede acceder al servicio Doctrine de esta manera:

$em = $this->container->get("doctrine")->getManager();

1 para la respuesta № 3

Los controladores del FOSUserBundle se extienden desde SymfonyComponentDependencyInjectionContainerAware. Entonces tienes acceso a la SymfonyComponentDependencyInjectionContainerInterface mediante $this->container. Con este contenedor puede acceder a la doctrina y, con frecuencia, al EntityManager:

$doctrine = $this->container->get("doctrine");
$em = $doctrine->getManager();