2014-01-24 18 views
0

我的問題是我是Symfony Noobie。如何爲FOS-UserManager使用Symfony2服務容器

我有FOSUserBundle,我只想用這段代碼訪問UserManager。

$userManager = $container->get('fos_user.user_manager'); 

但它沒有工作。我的錯誤信息是:

enter image description here

我想看看天氣的服務宣戰與否與控制檯突擊隊: PHP應用程序/控制檯容器:調試,但服務「fos_user.user_manager」聲明/註冊。

有沒有可能我忘了服務容器的東西?

問候 邁克爾

PS:這裏是我的控制器類的全碼:

<?php 

namespace Main\UserBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
use FOS\UserBundle\Model\UserManagerInterface; 

class ProfileController extends Controller 
{ 
    /** 
    * @Route("/listProfile") 
    * @Template() 
    */ 
    public function listProfileAction() 
    { 
     $user = $container->get('fos_user.user_manager'); 


     return array('user' => $user); 

    } 

回答

2

你需要調用的類屬性「容器」使用$this->container,而不是一個局部變量,你是現在打電話。

接下來的問題將是你只是調用用戶管理器而不是實際的用戶。

要得到你應該使用當前用戶...

$user = $this->container->get('security.context')->getToken()->getUser(); 

ALSO

當你正在擴展Symfony\Bundle\FrameworkBundle\Controller\Controller你也可以使用$this->get('something.something')但是這僅僅是一個快捷方式$this->container->get('something.something')方法(見:Controller source)。 $this->get()在擴展ContainerAware時不可用。

由於某種原因,我去代碼sample瘋狂....

相關問題