Как получить доступ к переменной сеанса в контроллере
Я создал переменную сеанса в одном контроллере, и я хочу получить доступ к нему на другом контроллере. В контроллере loginsuccess я установил сеанс:
$session->set('id',$id);
Как я могу получить доступ к этой переменной в другом контроллере?
Ответ 1
Существует служба session, которую вы должны использовать:
$id = $this->get('session')->get('id');
или
$this->get('session')->set('id', $id);
Ответ 2
В более общем случае, если ваш контроллер выходит из базового контроллера Symfony (Symfony\Bundle\FrameworkBundle\Controller\Controller), вы можете получить сеанс тремя способами:
$session = $this->container->get('session');
$session = $this->get('session'); (который в основном является ярлыком для 1)
$session = $request->getSession();
Ответ 3
В то время как ответ Киприана действителен, вы найдете в документации следующее использование:
use Symfony\Component\HttpFoundation\Session\Session;
$session = new Session();
$session->start();
// set and get session attributes
$session->set('id',$id);
$session->get('id'); //this is the line you are looking for
В то время как рекомендуется явно начать сеанс, сеансы будут фактически начинаются по требованию, то есть, если какой-либо запрос сеанса чтение/запись данных сеанса.
Ответ 4
Существует третий способ, как запись в комментарии:
use Symfony\Component\HttpFoundation\Session\SessionInterface;
public function indexAction(SessionInterface $session)
{
$session->set('test', 'yes !');
}
Этот способ позволяет вам получить переменную с подсказкой типа, таким образом вы можете получить доступ к методам объекта Session в вашей IDE.