J'utilise FOSUserBundle dans Symfony 2.3, j'ai créé une table supplémentaire pour stocker le profil utilisateur. À un moment donné, je dois accéder au gestionnaire d'entités pour persister et vider les données provenant du formulaire de profil dans la table de profil, mais j'ai des difficultés à obtenir une instance du gestionnaire d'entité.
Une idée?
Merci!
Réponses:
2 pour la réponse № 1Pour éditer les profils des utilisateurs à l'aide de FOSUserBundle, vous devez créer un nouveau ProfileController qui étend le ProfileController de FOSUserBundle.
Ici, vous pouvez maintenant remplacer les méthodes de FOSUserBundle.
Un exemple de départ:
<?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 pour la réponse № 2
Vous pouvez accéder au service Doctrine de cette façon:
$em = $this->container->get("doctrine")->getManager();
1 pour la réponse № 3
Les contrôleurs du FOSUserBundle s'étendent de SymfonyComponentDependencyInjectionContainerAware
. Vous avez donc accès à la SymfonyComponentDependencyInjectionContainerInterface
par $this->container
. Avec ce conteneur, vous pouvez accéder à la doctrine et, par conséquent, à EntityManager:
$doctrine = $this->container->get("doctrine");
$em = $doctrine->getManager();