Php 在登录和注销后丢失当前本地语言
我可以正确地切换网站的语言,但当我登录时,我在url中丢失了当前语言。例如,登录前和登录后,我有这个 symfony2.7始终采用区域设置:fr。我使用FosUserBundle。我发现我可以使用bundle来解决这个问题,但我认为我可以通过编辑configuration来解决这个问题。 登录后,我按照默认的\u目标\u路径重定向网站:幻灯片\u索引,如下所示Php 在登录和注销后丢失当前本地语言,php,symfony,routing,fosuserbundle,Php,Symfony,Routing,Fosuserbundle,我可以正确地切换网站的语言,但当我登录时,我在url中丢失了当前语言。例如,登录前和登录后,我有这个 symfony2.7始终采用区域设置:fr。我使用FosUserBundle。我发现我可以使用bundle来解决这个问题,但我认为我可以通过编辑configuration来解决这个问题。 登录后,我按照默认的\u目标\u路径重定向网站:幻灯片\u索引,如下所示 app_slideshow: resource: "@AppBundle/Resources/config/routing/sl
app_slideshow:
resource: "@AppBundle/Resources/config/routing/slideshow.yml"
prefix: /{_locale}/admin/slideshow
您可以使用 将所需的捆绑包添加到composer.json:
"require": {
...
"jms/i18n-routing-bundle": "1.1.*",
"jms/translation-bundle": "1.1.*",
"friendsofsymfony/user-bundle": "1.3.*"
},
JMS路由包的链接 但在你安装它之前,请看一下这个简短的视频教程。本教程帮助我了解了fos用户包和url中的区域设置之间存在的问题 如果您不想在composer.json文件中安装jms路由捆绑包,可以使用以下命令安装它
php composer.phar require jms/i18n路由捆绑包“dev master”
这是我的配置:
jms_i18n_routing:
default_locale: "%locale%"
locales: ["fr", "en"]
strategy: prefix_except_default
Security.yml:
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
require_previous_session: false
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: your_route_name_homepage
logout:
path: fos_user_security_logout
target: your_route_name_homepage
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICADED_FULLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICADED_FULLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
安装Jms路由包后。尝试执行命令
debug/router
(symfony 3)并查看路由名称和前缀。我今天早上通过安装jms路由捆绑包解决了这个问题。请给我jms路由捆绑包的链接我会在2分钟内给你写一个完整的答案。通过链接和配置。在我的访问控制中,我应该添加/en/和/fr/否则我可以访问管理员而无需身份验证-{path:^/en/admin/,role:role_admin}-{path:^/fr/admin/,role:role_admin}@Mintho433你认为我的解决方案是合理的吗!?谢谢我更新了我的答案,向您展示了我的访问控制密钥中的内容。
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
require_previous_session: false
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: your_route_name_homepage
logout:
path: fos_user_security_logout
target: your_route_name_homepage
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICADED_FULLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICADED_FULLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }