正在从控制器中删除会话对象创建


Removing session object creation from controller

我正在symfony2中开发一个购物车。我添加了产品,并在会话中存储。为了显示购物车(它在每一页的顶部),目前我正在执行:

$session = new Session(); 

在每个控制器的每个动作中。

最好的方法是什么?

在symfony2框架中,会话是作为服务公开的,因此最好不要让容器自己管理会话生命周期。您也可以将其注入到您的自定义服务中。因此,例如,您可以在会话中设置一个对象,如:

通用控制器:

 $user_id = $this->get('session')->set('user_id',null /*default value*/);
 $this->get('session')->set('product_id',$product_id);

请参阅文档以获取进一步的参考。

您还可以访问分支中的会话服务,如下所示:

{{app.session.get('product_id')}}

希望得到帮助。