gpt4 book ai didi

php - symfony 在登录期间更改路由中的语言环境

转载 作者:搜寻专家 更新时间:2023-10-31 21:56:50 25 4
gpt4 key购买 nike

我在 symfony (2.7) 应用程序的登录事件期间遇到了更改语言环境的问题。我正在关注粘性语言环境 symfony 文章 http://symfony.com/doc/current/cookbook/session/locale_sticky_session.html , 但根本不使用 session 。

我使用的方法是每个 URI 仅包含一种表示形式。因此,所有路由都包含 {_locale}(并且不需要用于粘性语言环境的 session 变量)。

我只是使用 UserLocaleListener 部分来获取用户区域设置并尝试将其设置到路由中,就像在这个 github 问题上一样 https://github.com/FriendsOfSymfony/FOSUserBundle/issues/829 .

我的问题可能是,登录时已经设置了 URI 语言环境。在登录事件期间,我需要/想要覆盖此语言环境值。如 github 文章所述,我添加了路由器上下文

UserLocaleListener InteractiveLoginEvent

/**
* @param InteractiveLoginEvent $event
*/
public function onInteractiveLogin(InteractiveLoginEvent $event)
{
$request = $event->getRequest();
$user = $event->getAuthenticationToken()->getUser();
$locale = $user->getLocale();

if (null !== $locale) {
$request->setLocale($locale);
$this->router->getContext()->setParameter('_locale', $locale);

//var_dump(); die;
}
}

不幸的是,它不起作用(至少在我的 symfony 2.7 上)。

如果我转储请求区域设置或路由器上下文区域设置,正确的用户区域设置将应用于上下文,但不会更改/应用于重定向到 default_target_path 或任何其他路径。

onInteractiveLoginEvent 是否来不及更改 URI 中的区域设置?或者我如何在(基于表单的)登录期间更改 URI 中的区域设置?

非常感谢任何提示。

最佳答案

正如我解释的那样here

locale 是根据请求设置的,不会“固定”,所以每次请求都会再次成为默认值,除非你做这样的事情:

http://symfony.com/doc/current/cookbook/session/locale_sticky_session.html

关于php - symfony 在登录期间更改路由中的语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com