如何自定义FOS UserBundle URL

pet*_*ner 33 php symfony fosuserbundle

我已经安装FOSUserBundle,我想自定义URL中/account/login,/account/register,/account/logout而不是/login,/register,/logout

我知道我可以修改捆绑包的路由配置,但它似乎不是正确的方法.

Nic*_*ich 80

如何覆盖/更改FOSUserBundle的路由

您可以覆盖即/register路线在app/config/routing.yml通过重新声明之后进口FOSUserBundle的XML作为航线资源.

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

# ...

fos_user_registration_register:
    path:      /account/register
    defaults:  { _controller: FOSUserBundle:Registration:register }
Run Code Online (Sandbox Code Playgroud)

...或者只是在导入时更改前缀:

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

# no need to override the route
Run Code Online (Sandbox Code Playgroud)

这同样适用于/login/logout:

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

# ...

fos_user_security_login:
    path:      /account/login
    defaults:  { _controller: FOSUserBundle:Security:login, _method: POST }

fos_user_security_logout:
    path:      /account/login
    defaults:  { _controller: FOSUserBundle:Security:logout, _method: POST }
Run Code Online (Sandbox Code Playgroud)

覆盖登录和注销网址的另一种方法

登录和注销路径也可以直接在您的app/config/security.yml:

security:
    firewalls: 
        your_firewall:
            # ...
            form_login:
                login_path: /account/login  # instead of fos_user_security_login
                # ...
            logout:
                path: /account/logout       # instead of fos_user_security_logout
                # ...
Run Code Online (Sandbox Code Playgroud)

以YAML格式列出的所有FOSUserBundle路由

您可以直接更改,然后将其包含在您的内容中app/config/routing.yml(无需导入捆绑包提供的那些作为资源)...或者将它们全部放入一个文件中并将其作为资源包含...

# -> from @FOSUserBundle/Resources/routing/change_password.xml

fos_user_change_password:
    pattern: /profile/password/change
    defaults: { _controller: FOSUserBundle:ChangePassword:changePassword }
    requirements:
        _method: GET|POST

# -> from @FOSUserBundle/Resources/routing/group.xml

fos_user_group_list:
    pattern: /groups/list
    defaults: { _controller: FOSUserBundle:Group:list }
    requirements:
        _method: GET

fos_user_group_new:
    pattern: /groups/new
    pattern:
    defaults: { _controller: FOSUserBundle:Group:new }
    requirements:
        _method: GET

fos_user_group_show:
    pattern: /groups/{groupname}
    defaults: { _controller: FOSUserBundle:Group:show }
    requirements:
        _method: GET

fos_user_group_edit:
    pattern: /groups/{groupname}/edit
    defaults: { _controller: FOSUserBundle:Group:edit }
    requirements:
        _method: GET|POST

fos_user_group_delete:
    pattern: /groups/{groupname}/delete
    defaults: { _controller: FOSUserBundle:Group:delete }
    requirements:
        _method: GET

# -> from @FOSUserBundle/Resources/routing/profile.xml

fos_user_profile_show:
    pattern: /profile/show
    defaults: { _controller: FOSUserBundle:Profile:show }
    requirements:
        _method: GET

fos_user_profile_edit:
    pattern: /profile/edit
    defaults: { _controller: FOSUserBundle:Profile:edit }
    requirements:
        _method: GET|POST

# -> from @FOSUserBundle/Resources/routing/registration.xml

fos_user_registration_register:
    pattern: /registration
    defaults: { _controller: FOSUserBundle:Registration:register }
    requirements:
        _method: GET|POST

fos_user_registration_check_email:
    pattern: /registration/check-email
    defaults: { _controller: FOSUserBundle:Registration:checkEmail }
    requirements:
        _method: GET

fos_user_registration_confirm:
    pattern: /registration/confirm/{token}
    defaults: { _controller: FOSUserBundle:Registration:confirm }
    requirements:
        _method: GET

fos_user_registration_confirmed:
    pattern: /registration/confirmed
    defaults: { _controller: FOSUserBundle:Registration:confirmed }
    requirements:
        _method: GET

# -> from @FOSUserBundle/Resources/routing/resetting.xml

fos_user_resetting_request:
    pattern: /profile/password/reset
    defaults: { _controller: FOSUserBundle:Resetting:request }
    requirements:
        _method: GET

fos_user_resetting_send_email:
    pattern: /profile/password/reset
    defaults: { _controller: FOSUserBundle:Resetting:sendEmail }
    requirements:
        _method: POST

fos_user_resetting_check_email:
    pattern: /profile/password/reset/check-email
    defaults: { _controller: FOSUserBundle:Registration:checkEmail }
    requirements:
        _method: GET

fos_user_resetting_reset:
    pattern: /profile/password/reset/{token}
    defaults: { _controller: FOSUserBundle:Registration:reset }
    requirements:
        _method: GET|POST

# -> from @FOSUserBundle/Resources/routing/security.xml

fos_user_security_login:
    pattern: /login
    defaults: { _controller: FOSUserBundle:Security:login }
    requirements:
        _method: GET|POST

fos_user_security_check:
    pattern: /login_check
    defaults: { _controller: FOSUserBundle:Security:check }

fos_user_security_logout:
    pattern: /logout
    defaults: { _controller: FOSUserBundle:Security:logout }
    requirements:
        _method: GET|POST
Run Code Online (Sandbox Code Playgroud)

  • 从2.2版开始,不推荐使用`pattern`和`_method`. (3认同)
  • 您需要设置登录路径和注销路径app/config/security.yml以进行正确的重定向.我认为这一步是强制性的 (2认同)