如何检查每个请求的用户状态(并重定向到它)

时间:2014-06-01 17:52:15

标签: symfony

我正在制作一款#34;浏览器游戏"在Symfony2中(像RPG一样)。在你开始战斗的那一刻,在战斗结束之前你无法做任何其他事情。

我需要检查,当用户的状态为"在战斗中#34;无论他想要到达哪个网址,都会重定向到"战斗页面"。

我尝试使用EventListener到Kernel.Request,并在每次该用户具有BATTLE状态并且不在Battle Page重定向时检查。这不能很好地工作,因为我有很多请求和我必须排除的事情,如DebuggerToolbar等。

有一个正确的方法吗?也许特别添加一个特殊的角色/权限?检查每个控制器?在行动?

我确定这是一个很好的方法,但我不知道如何寻找它。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过侦听kernel.controller事件来执行此操作,并在不满足条件时抛出错误以执行具有特定异常的控制器。

创建一个异常监听器,在拦截该特定异常时执行重定向。

您可以在此处阅读的机制的非常好的描述:http://php-and-symfony.matthiasnoback.nl/2012/12/prevent-controller-execution-with-annotations-and-return-a-custom-response/