实体或特征内的用户当前语言环境

问题描述

我们如何在实体或 Trait 内部访问当前用户本地?

namespace App\Entity;


class Activities
{
    use Translation;

   public $locale;

    public function __construct(**PUT User locale**)
    {
        $this->locale = **PUT User locale**
    }

}

解决方法

您不能这样做,因为区域设置存储在不应从实体访问的 Request 对象中。

因此,如果您确实需要该语言环境,则应将其作为参数传递。

我建议您环顾Doctrine extension documentation for translating entities

您会发现这比每次仅传递用户区域设置要好。 实际上,它是使用事件侦听器将语言环境传递给 Translation 组件。