Symfony2:无法找到路径“/ en / login_check”的控制器

时间:2012-02-11 04:48:24

标签: login symfony

我正在按照Symfony书籍Security chapter中提供的示例,在Symfony中创建登录表单。

我已经在security.yml,routing.yml中创建了必要的配置,并且还实现了我的ControllerAction和Twig模板。

以下是安全性和路由文件的外观: -

security.yml

Firewalls:
    # defaut login area for standard users
    main:
        switch_user:        true
        context:            user
        pattern:            .*
        form_login:
            provider:       fos_userbundle
            login_path:     /login
            use_forward:    false
            check_path:     /login_check
            failure_path:   null
        logout:             true
        anonymous:          true

的routing.yml

login:
    pattern:   /{_locale}/login
    defaults:  { _controller: XYZSiteBundle:SiteUser:login }
login_check:
    pattern:   /{_locale}/login_check

如您所见,login_pathcheck_path都位于同一防火墙下。 我仍然收到以下错误: -

  

无法找到路径“/ en / login_check”的控制器。也许您忘了在路由配置中添加匹配的路由?

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您的配置设置几乎正常。您的问题与路由有关。您只需将routing.yaml更改为

即可解决此问题

在routing.yaml

  

登录:
  pattern: / login 默认值:{_ console:XYZSiteBundle:SiteUser:login}

     

login_check:

     

模式: / login_check

因为你的\ login和\ logincheck模式必须与security.yaml模式匹配。您需要删除/ {_ locale} / login和/ {_ locale} / login_check。

希望这会对你有所帮助。

答案 1 :(得分:0)

check_path部分的form_login值与/en/login_check不匹配。

您必须修改它以匹配/.*/login_check

答案 2 :(得分:0)

您的login_check路由缺少控制器默认值,应为:

login_check:
    pattern:   /{_locale}/login_check
    defaults:  { _controller: XYZSiteBundle:SiteUser:loginCheck }