Php Symfony3基于用户首选项的区域设置问题(来自数据库)
vaersion Symfony 3.1.3 我希望根据用户偏好设置区域设置,因此我已将以下内容添加到用户实体中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
/**
* @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
甚至数据库存储值也是nl或fr
所以我的问题是当我使用$request->getLocale()
和app.request.getLocale()
时,这个en是从哪里填充的
及
如何避免这种情况,并将数据库存储值设置为区域设置
另外,如果我想用任何其他信息编辑/更新此文件,请告诉我。您还必须实现第一部分(onKernelRequest
listener)。是:)这就是答案