Php Symfony3基于用户首选项的区域设置问题(来自数据库)

Php Symfony3基于用户首选项的区域设置问题(来自数据库),php,symfony,locale,Php,Symfony,Locale,vaersion Symfony 3.1.3 我希望根据用户偏好设置区域设置,因此我已将以下内容添加到用户实体中 /** * @var string * @ORM\Column(name="locale", type="string",nullable=true) * @Expose */ protected $locale; /** * Set locale * @param string $locale * @return Users */ public function

vaersion Symfony 3.1.3

我希望根据用户偏好设置区域设置,因此我已将以下内容添加到用户实体中

/**
 * @var string
 * @ORM\Column(name="locale", type="string",nullable=true)
 * @Expose
 */
protected $locale;

/**
 * Set locale
 * @param string $locale
 * @return Users
 */
public function setLocale($locale)
{
    $this->locale = $locale;

    return $this;
}

/**
 * Get locale
 * @return string
 */
public function getLocale()
{
    return $this->locale;
}
以上操作很好,我可以在数据库中CRUD语言环境值

然后,根据本指南,我创建了
UserLocaleListener
,调试时如下

public function onInteractiveLogin(InteractiveLoginEvent $event)
{
    $user = $event->getAuthenticationToken()->getUser();

    if (null !== $user->getLocale()) {
        $this->session->set('_locale', $user->getLocale());
        print($this->session->get('_locale'));die;
    }
}
print($this->session->get('u locale');死亡给出预期结果,该结果存储在数据库中的区域设置值(fr、nl或en)

但是当我使用

echo$locale=$request->getLocale();死亡

{{app.request.getLocale()}}
在细枝中

结果总是en

甚至数据库存储值也是nlfr

所以我的问题是当我使用
$request->getLocale()
app.request.getLocale()
时,这个en是从哪里填充的

如何避免这种情况,并将数据库存储值设置为区域设置


另外,如果我想用任何其他信息编辑/更新此文件,请告诉我。

您还必须实现第一部分(
onKernelRequest
listener)。是:)这就是答案