我的问题是我是Symfony Noobie。
我有FOSUserBundle,我只想用这段代码访问UserManager。
$userManager = $container->get('fos_user.user_manager');
但它不起作用。我的错误信息是:
我尝试使用控制台命令来查看服务是否声明的天气: php app / console container:debug但声明/注册了服务'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);
}
答案 0 :(得分:2)
您需要使用$this->container
而不是当前正在调用的局部变量来调用类属性“container”。
下一个问题是你只是在调用用户管理器而不是实际用户。
要获得当前用户,您应该使用...
$user = $this->container->get('security.context')->getToken()->getUser();
同时强>
在您展开Symfony\Bundle\FrameworkBundle\Controller\Controller
时,您也可以使用$this->get('something.something')
,但这只是$this->container->get('something.something')
方法的快捷方式(请参阅:Controller source)。扩展$this->get()
时无法使用ContainerAware
。
出于某种原因,我将代码sample
发疯了....