Я создал переменную сеанса в одном контроллере, и я хочу получить доступ к нему на другом контроллере. В контроллере loginsuccess
я установил сеанс:
$session->set('id',$id);
Как я могу получить доступ к этой переменной в другом контроллере?
Я создал переменную сеанса в одном контроллере, и я хочу получить доступ к нему на другом контроллере. В контроллере loginsuccess
я установил сеанс:
$session->set('id',$id);
Как я могу получить доступ к этой переменной в другом контроллере?
Существует служба session
, которую вы должны использовать:
$id = $this->get('session')->get('id');
или
$this->get('session')->set('id', $id);
В более общем случае, если ваш контроллер выходит из базового контроллера Symfony (Symfony\Bundle\FrameworkBundle\Controller\Controller
), вы можете получить сеанс тремя способами:
$session = $this->container->get('session');
$session = $this->get('session');
(который в основном является ярлыком для 1)$session = $request->getSession();
В то время как ответ Киприана действителен, вы найдете в документации следующее использование:
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
http://symfony.com/doc/master/components/http_foundation/sessions.html
Примечание:
В то время как рекомендуется явно начать сеанс, сеансы будут фактически начинаются по требованию, то есть, если какой-либо запрос сеанса чтение/запись данных сеанса.
Существует третий способ, как запись в комментарии:
use Symfony\Component\HttpFoundation\Session\SessionInterface;
public function indexAction(SessionInterface $session)
{
$session->set('test', 'yes !');
}
Этот способ позволяет вам получить переменную с подсказкой типа, таким образом вы можете получить доступ к методам объекта Session в вашей IDE.