具有i18n路由的Symfony2 access_control

时间:2015-04-18 21:45:23

标签: php symfony internationalization

我有一个symfony2项目,我有一个登录用户的部分。国际化后,该网站以5种不同的语言存在。由于成员区域,我在security.yml中有一长串access_control规则,直到这一点,我无法使acl列表更容易,如果有新语言,我必须再次添加所有acl规则翻译的路线。 例如,默认路由是/ help需要ROLE_USER,但在德语中路由是/ hilfe。

有没有更简单的方法来处理这个复制已翻译的路径?

2 个答案:

答案 0 :(得分:1)

您好是仅适用于已登录用户的网络应用程序吗? 在这种情况下,您可以像这样设置access_control:

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

或者您可以为您的角色添加前缀。意味着所有匹配/ user / *都需要ROLE_USER

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

希望它有助于解决你问题的确切答案

答案 1 :(得分:1)

正如@jan Dockal所说,你可以在路径中使用正则表达式。 通过正则表达式,您可以为想要匹配^/user//user/help的macth /user/hilfe的任何网址设置角色。

但我建议你使用jms bundle和自定义策略

我希望这可以帮助你:)