2014-10-08 39 views
1

我有一个控制器的行动(我们可以称之为listPageAction)。此操作管理我的主视图(元素列表)。这些元素可以被过滤(它在这个相同的Action上被管理)。Symfony 2 - 保持操作之间的变量没有会话

我想保留过滤器值在我的不同页面(= Actions)之间,并在我回到主视图(listPageAction)时恢复它们。

我无法使用session,因为该应用程序经常在浏览器的多个选项卡中使用,所以会话可能会发生碰撞。

我不能通过“手动”过滤器元素,因为从其他页面,我可以到达其他页面,等等(这是一个分层的页面列表)。将每个路线的3个变量传递给每个动作并不是最理想的。

使用全局变量会很好,但我不确定它是否可能像PHP中的经典全局变量。我用Twig的全局变量(我用于渲染)读了几件事情。这对我的需求是可能的吗?怎么样 ?

其他可能性我已经确定(但我不知道如何使用它),将使用Listener。我想我可以在每个回复中添加我的过滤器值(kernel.response)。 但是,我不知道我可以如何传递给我的听众过滤器,以及当我回到主页面时如何在listPageAction上恢复它们​​。

在此先感谢

回答

0

您可以手动为每个页面之间的唯一参数,关键

这样你可以使用会话,使用键来区分他们之间的多个标签。

网址是page/{key}/step1page/{key}/step2 会话存储对象将是像$session->get($key.".object");

+0

我认为这不是最好的解决办法,但目前我没有更好的主意。我不太喜欢编辑所有路由以将“key”添加到URL中的事实。但是,由于我的限制,我暂时把它拿下来!谢谢。 – Seto 2014-10-14 20:45:18