How to set session variables for all the controllers in Symfony2?

后端 未结 3 896
不思量自难忘°
不思量自难忘° 2021-02-13 04:48

How do I create and access Symfony 2 session variables in my controllers. I used like this.

$session = new Session();
$session->start();
$session->set(\'lo         


        
3条回答
  •  隐瞒了意图╮
    2021-02-13 05:36

    From the docs:

    Symfony sessions are designed to replace several native PHP functions. Applications should avoid using session_start(), session_regenerate_id(), session_id(), session_name(), and session_destroy() and instead use the APIs in the following section.

    and:

    While it is recommended to explicitly start a session, a sessions will actually start on demand, that is, if any session request is made to read/write session data.

    So sessions is started automatically and can be accessed e.g. from controllers via:

    public function indexAction(Request $request)
    {
        $session = $request->getSession();
        ...
    }
    

    or:

    public function indexAction()
    {
        $session = $this->getRequest()->getSession();
        // or
        $session = $this->get('session');
        ...
    }
    

    than:

    // store an attribute for reuse during a later user request
    $session->set('foo', 'bar');
    
    // get the attribute set by another controller in another request
    $foobar = $session->get('foobar');
    
    // use a default value if the attribute doesn't exist
    $filters = $session->get('filters', array());
    

提交回复
热议问题