Joe John
Joe John

Reputation: 181

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

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

$session = new Session();
$session->start();
$session->set('loginUserId',$user['user_id']);

I want to know how to use the above session variable in all my controllers to access.

Upvotes: 17

Views: 46846

Answers (3)

Kamil Adryjanek
Kamil Adryjanek

Reputation: 3338

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());

Upvotes: 13

Gabriel Filipiak
Gabriel Filipiak

Reputation: 986

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

Upvotes: 35

Charles-Antoine Fournel
Charles-Antoine Fournel

Reputation: 1783

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>';
  }

Upvotes: 4

Related Questions