Symfony2与FOSUserBundle - 重定向无法在控制器中工作

时间:2013-03-04 14:13:15

标签: php symfony fosuserbundle

我的默认控制器路由“/”设置为运行索引:

public function indexAction() {
    if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')) {
        //render the logged in view(s)
        $response = $this->render('Pan100MoodLogBundle:Default:index.html.twig');
    } else {
        //redirect to the login controller
        $response = $this->redirect($this->generateUrl('login'));
    }
    return $response;
}

但是Symfony找不到路线:

  

路线“登录”不存在。   500内部服务器错误 - RouteNotFoundException

有什么不对?我正在使用FOSUserBundle。

3 个答案:

答案 0 :(得分:4)

如果您输入

php app/console router:debug

您将看到所有申请路线。

使用php app/console router:debug | grep login,显示:

fos_user_security_login               ANY      /login
fos_user_security_check               ANY      /login_check

所以试试

$response = $this->redirect($this->generateUrl('fos_user_security_login'));

答案 1 :(得分:1)

您可以重定向到fos_user_security_login

$response = $this->redirect($this->generateUrl('fos_user_security_login'));

答案 2 :(得分:0)

看起来,您没有名为“login”的路线。 你必须在route.yml | xml文件中创建它,但你不必指定控制器,因为FOS会处理它,就像在yml中一样:

login:
    pattern: /login

编辑: 对不起,我的错误,当然不是布局,登录。 但你是岸上,路线是否装载?导致generateUrl期望路由名称。