0

每次我尝试访问mypage/registerFOSUserBudnle 创建的任何其他页面时,我都会被重定向到我的默认控制器mypage/而不是注册页面。

这些是我的路由文件:

(app\config\routing.yml)

my_website:
resource: "@MyWebsiteBundle/Resources/config/routing.yml"
prefix:   /

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /{_locale}/profile

而另一个(Resources\config\routing.yml)

mywebsite_first:
    pattern:  /{_locale}/
    defaults: { _controller: MyWebsiteBundle:Default:index }

mywebsite_calendar:
    pattern: /{_locale}/calendar
    defaults: { _controller: MyWebsiteBundle:Calendar:index }

mywebsite_home:
    pattern: /{_locale}/home
    defaults: { _controller: MyWebsiteBundle:Home:index }

mywebsite_messages:
    pattern: /{_locale}/messages
    defaults: { _controller: MyWebsiteBundle:Messages:index }

另外 - 我的 security.yml 文件

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

我究竟做错了什么?

4

1 回答 1

0

它不起作用,因为它与您网站路由的 _locale 参数匹配,Symfony 路由器将始终选择它找到的第一个匹配路由。

您需要添加路线要求:

mywebsite_first:
    pattern:  /{_locale}/
    defaults: { _controller: MyWebsiteBundle:Default:index }
    requirements:
    _locale: en|fr|de

或者只是将网站的路线放在 FOSUser 的路线之后。

于 2013-07-18T11:57:49.273 回答