如何在Symfony中使用Sessions?

Har*_*rup 31 php symfony1 symfony-1.4 symfony

与经典PHP一样,我们使用魔术变量来启动和创建会话,那么如何在Symfony中执行此操作?

Tac*_*sky 80

在Symfony2中,语法不同:

$session = $this->getRequest()->getSession();

// store an attribute for reuse during a later user request
$session->set('foo', 'bar');

// in another controller for another request
$foo = $session->get('foo');
Run Code Online (Sandbox Code Playgroud)

您还可以从Twig获取会话变量,而无需显式传递会话变量(它位于全局"app"中):

{{ app.session.get('foo', 'bar'); }}
Run Code Online (Sandbox Code Playgroud)

  • 从Symfony 2.4开始,不推荐使用`getRequest()`.现在正确的方法是将一个Request注入控制器并调用`$ request-> getSession()`.http://api.symfony.com/2.0/Symfony/Component/HttpFoundation/Request.html#method_getSession (7认同)
  • 如何使用会话变量违反了得墨忒耳法则? (6认同)
  • @Videl它没有使用违反LoD的会话,它是symfony的抽象层. (3认同)
  • **Symfony:**_因为谁真的关心得墨忒耳法呢?_ (2认同)

Fra*_*anz 32

在控制器中,您可以通过用户对象访问会话变量.

// Get a session value
$name = $this->getUser()->getAttribute('name', 'default_value');
// Set a session value
$this->getUser()->setAttribute('name', $value);
Run Code Online (Sandbox Code Playgroud)