当用户在 Symfony 中更改语言环境时更新用户会话

Posted

技术标签:

【中文标题】当用户在 Symfony 中更改语言环境时更新用户会话【英文标题】:update user session when user change locale in Symfony 【发布时间】:2021-09-27 02:22:47 【问题描述】:

在我的 Symfony 4.4 应用程序中,我创建了 UserLocaleSubscriber,它可以正常工作,但是当用户更改您的语言环境时,必须注销并登录才能更改翻译语言。我尝试使用EqutableInterface 在不注销用户的情况下更新用户会话。

public function isEqualTo(UserInterface $user)
    
        if ($user instanceof self)
        
            if ($user->getLocale() != $this->locale) 
                return false;
            
        
        return true;
    

但是当我更改用户区域设置时,我必须注销并登录才能使用新的区域设置。是否有任何选项可以在不注销的情况下更改语言?

【问题讨论】:

【参考方案1】:

您根本不需要注销,只需重定向到 /en 或 /es 取决于您的语言和路由。

【讨论】:

以上是关于当用户在 Symfony 中更改语言环境时更新用户会话的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2、Sonata、UserBundle:当用户启用更新时发送电子邮件

Symfony2 语言环境整页事件监听器

Symfony2 实现 PATCH 方法来更新用户字段

在Symfony单元测试期间无法获取用户名

当用户更改时,监听用户的 StreamProvider 不会更新

如果使用 symfony 邮件程序在用户设置中更改电子邮件,则发送确认电子邮件