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

后端 未结 3 903
不思量自难忘°
不思量自难忘° 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:33

    One way of using Sessions in Symfony in controller is:

    setting:

    $this->get('session')->set('loginUserId', $user['user_id']);
    

    getting:

    $this->get('session')->get('loginUserId');
    

    If you use standard framework edition

    0 讨论(0)
  • 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());
    
    0 讨论(0)
  • 2021-02-13 05:38

    http://symfony.com/doc/current/components/http_foundation/sessions.html

      use Symfony\Component\HttpFoundation\Session\Session;
    
      $session = new Session();
      $session->start();
    
      // set and get session attributes
      $session->set('name', 'Drak');
      $session->get('name');
    
      // set flash messages
      $session->getFlashBag()->add('notice', 'Profile updated');
    
      // retrieve messages
         foreach ($session->getFlashBag()->get('notice', array()) as $message) {
         echo '<div class="flash-notice">'.$message.'</div>';
      }
    
    0 讨论(0)
提交回复
热议问题