2014-09-10 103 views
0

是否有可能具有相同的路径路径,但是有两种不同的动作。我想用一个动作,当用户登录和另一个当用户没有登录。Symfony2:两个动作的相同路径路径

/** 
* @Route("/", name="bundle_index") 
* @Template("NameBundle:Default:index.html.twig") 
*/ 

/** 
* @Route("/", name="bundle_index_auth") 
* @Security("has_role('ROLE_USER')") 
* @Template("NameBundle:Default:auth.html.twig") 
*/ 
+0

我不这么认为; symfony会始终开启第一个溃败动作。我建议在你的路由中使用一个变量,例如'* @Route(“/ {isset_var}”,name =“bundle_index”)',并且通过这个动作来处理它,这样如果没有设置,首先做第二件事;或者甚至在访问控制部分将路径设置为ANONYMOUS用户,然后在您的操作中处理它,如果用户未通过身份验证首先要做的事情否则第二件事 – Javad 2014-09-10 14:11:00

回答

0

使用不同的名字,我觉得不一样的路径,我无法想象在这种情况下,这可能是有用的,即使我们可以做到这一点(也许如果你更好地解释你想达到的目标),但看看你的例子,你可以做同样的动作所需的所有检查...检查ROLE_USER是否被授予用户(否则重定向用户或抛出一个访问异常白色与你的例子相同的行为),并因此渲染正确的模板(显然与任何其他操作需要)。

+0

这就是我目前正在做的,有一个操作并检查用户是否登录然后将他重定向到适当的行动。但我觉得它会为用户的网址添加垃圾。我希望用户只看到“http:// www.mywebsite.com /”他是否已登录,但是当他登录时,他看不到相同的页面。无论如何,就像我说过的,我已经实施了这个解决方案,但我仍然在想。 – 2014-09-10 20:02:35

+0

但是,检查用户来自哪里的操作?我希望这不是来自登录行为,不是吗?否则,您可以使用不同的http方法使用相同的路径,例如CRUD操作(GET用于访问,POST用来检查证书)。首先看起来这听起来非常类似于“记住我”操作......(显然已经在symfony中)。你有没有想过“听众”或“事件”? – 2014-09-10 21:00:27