问题描述
我正在使用fosuserbundle,这是我在fosubuserprovider类中的功能:
public function connect(UserInterface $user, UserResponseInterface $response) { // and here i want to get session value like: $session = $request->getSession(); $session->get('value1'); // }
推荐答案
您需要在服务声明中注入会话,
,然后将其添加到FOSUserProvider类的构造函数中,
in services.yml和服务部分add @session
parameters: my_user_provider.class: Auth\UserBundle\Security\Core\User\FOSUBUserProvider services: my_user_provider: class: "%my_user_provider.class%" #this is the place where the properties are passed to the UserProvider class arguments: [@fos_user.user_manager,{facebook: facebookID},@session,@doctrine.orm.entity_manager]
声明$session和$ em变量在上面的类connect函数上,并添加以下构造函数,
public function __construct(UserManager $userManager, Array $properties, Session $session, EntityManager $em) { $this->session=$session; $this->em=$em; parent::__construct($userManager, $properties); }
在功能中Connect您可以将其作为
获得public function connect(UserInterface $user, UserResponseInterface $response) { $value=$this->session->get('value1'); $em=$this->em; // or directly use $this->em->flush(); or whatever you want . . . }
问题描述
i'm using fosuserbundle and this is my function inside FOSUBUserProvider class :
public function connect(UserInterface $user, UserResponseInterface $response) { // and here i want to get session value like: $session = $request->getSession(); $session->get('value1'); // }
推荐答案
you need to inject Session in your Services Declaration,
and then add it in constructor of FOSUserProvider class,
in services.yml and services section add @session
parameters: my_user_provider.class: Auth\UserBundle\Security\Core\User\FOSUBUserProvider services: my_user_provider: class: "%my_user_provider.class%" #this is the place where the properties are passed to the UserProvider class arguments: [@fos_user.user_manager,{facebook: facebookID},@session,@doctrine.orm.entity_manager]
declare $session and $em variable in your class above connect function and add following constructor,
public function __construct(UserManager $userManager, Array $properties, Session $session, EntityManager $em) { $this->session=$session; $this->em=$em; parent::__construct($userManager, $properties); }
in function Connect you can get it as,
public function connect(UserInterface $user, UserResponseInterface $response) { $value=$this->session->get('value1'); $em=$this->em; // or directly use $this->em->flush(); or whatever you want . . . }
相关问答
Symfony2 FOSUserBundle FOSUserEvents
用FOSUserBundle扩展Symfony2的UserManager
覆盖FOSUserBundle路由Symfony2
Symfony2 FOSUserBundle和组的错误
Symfony2 FOSUserBundle角色实体
Symfony2 FOSUserBundle错误-FileLoaderImportCircularReferenceException
symfony2 : 使用fosuserbundle登录后使用referer
Symfony2 FOSUserBundle不能将认证的用户设置为会话?
使用Symfony2的FOSUserBundle AJAX登录(路由)。
FOSUserBundle(登录/注册) + AJAX + Symfony2