基于用户首选项的Locale上的Symfony3问题(来自数据库)

时间:2016-11-02 03:39:26

标签: 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 setLocale($locale)
{
    $this->locale = $locale;

    return $this;
}

/**
 * Get locale
 * @return string
 */
public function getLocale()
{
    return $this->locale;
}

以上工作正常我可以CRUD数据库中的语言环境值

然后,按照本指南Setting the Locale Based on the User's Preferences我创建了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('_locale'));die;给出了在数据库中存储区域设置值(fr,nl或en)的预期结果。

但是当我使用

时 控制器中的

echo $locale = $request->getLocale();die;

树枝中的

{{ app.request.getLocale() }}

结果始终为 en

即使数据库存储值为 nl fr

所以,当我使用$request->getLocale()app.request.getLocale()时,我的问题是来自 en 的填充位置?

如何避免此 zh_CN 并将数据库存储值设置为区域设置?

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

0 个答案:

没有答案