Я использую fosuserbundle, и это моя функция внутри класса FOSUBUserProvider:
public function connect(UserInterface $user, UserResponseInterface $response) { // and here i want to get session value like: $session = $request->getSession(); $session->get('value1'); // }
вам необходимо ввести Session в свою декларацию служб,
а затем добавьте его в конструктор класса FOSUserProvider
,
в разделе services.yml
и services добавьте @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 . . . }