I\'m getting a hard time trying to understand how symfony session works.
And couldn\'t find the answer I\'m looking for here on S.O. or other external sources.
[SETT
One way of getting Sessions from controller is:
$session = $this->get("session");
Setter: $session->set('id','
Getter: $session->get('id');
Full Code
public function sessionAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$site = $em->getRepository('SiteBundle:Site')->findOneBy(array('url'=>$request->getSchemeAndHttpHost()));
if($site) {
$session = $this->get("session");
$session->set('id',$site->getId());
$session->set('url',$site->getUrl());
$session->set('name',$site->getName());
} else {
[...]
}
}
Update-1:
Create service to set session variables
AppBundle\EventListener\SessionHandler.php
doctrine = $doctrine;
$this->router = $router;
$this->container = $container;
}
public function setSession() {
$route = $this->container->get('request')->get('_route');
$site = $this->doctrine->getRepository('SiteBundle:Site')->findOneBy(array('url' => $route->getUri()));
if($site) {
$session = $this->container->get("session");
$session->set('id',$site->getId());
$session->set('url',$site->getUrl());
$session->set('name',$site->getName());
} else {
[...]
}
}
}
AppBundle\Resources\config\services.yml
Option-1
Call setSession()
function on each page load event.
session_handler:
class: AppBundle\EventListener\SessionHandler
arguments: [@doctrine, @router, @service_container]
tags:
- {name: kernel.event_listener, event: kernel.request, method: setSession}
Option-2
Call setSession()
function manually where you need to set session.
session_handler:
class: AppBundle\EventListener\SessionHandler
arguments: [@doctrine, @router, @service_container]
tags:
- {name: kernel.event_listener }
Call setSession()
function from controller
$sessionService = $this->get('session_handler');
$sessionService->setSession();