Symfony2:最好使用会话对象还是我自己的经理?

时间:2012-09-19 10:43:05

标签: symfony twig

that问题相关。
我知道我必须创建一些服务来处理我的实体等等。那是因为我必须将我的逻辑从控制器“移开”并放入“经理”(即服务)

现在我有一个服务,它有一些逻辑。在该服务中,根据用户,返回“关联对象”列表 - 比如那些对象是运动队 假设我的列表中的第一个元素(以某种方式从存储库生成)是“默认”团队,并说我有一个页面,我可以更改它 FOR FOR all session long
注销或会话失效后,我想在“默认”情况下返回。

所以我的想法是:“因为我为这个实体编写了一个管理器,我将在这个类中编写一个私有属性,其中load(来自db)这个属性和存储(暂时,用setter方法)我的更改。 “
这不会影响我的数据库,我可以保留所有会话的信息。

但是我想到了一个想法:会话对象怎么样? (是服务,如果我不明白错了)
我的解决方案是一个很好的解决方案,还是最好将我的信息存储到会话对象中? 从我的观点来看,它是相同的,除了我可以使用app.session直接从twig读取会话的变量。我错了吗?

此外,如果我没有错,我怎样才能从twig访问我的对象属性,而不是每次都从控制器传递它们? (就像有一个全局变量,我希望在我的应用程序页面中随处显示)。

修改

更多信息可在this chat transcript中找到。

1 个答案:

答案 0 :(得分:1)

如果要在会话期间存储变量(例如,登录直到注销或只要用户不关闭其浏览器窗口),则必须将其存储在会话对象中。如果要在请求期间存储变量,可以将其存储在管理器服务中。

但是,您可以使用管理器服务加载会话变量并使其可供控制器使用。

将控制器与数据库/ Doctrine分离是一个好主意,将控制器与会话分离也是一个好主意。

更新:正如评论中提到的那样,在服务中进行会话时不是一个好主意。但是,您仍应将变量存储在会话中,并使用控制器设置服务中的值。