Symfony,如何在实体中获取当前用户(FOS),未使用 __construct()?

Symfony, how get current user (FOS) in entity, unused __construct()?

我有一个实体 Book。此Book的标题以不同的语言存储(实体BookBookTranslates关联为OneToMane)。

实体 Book 在多个地方用作表单字段(如 select)。为此,我需要为 Book 实体设置 __toString (),这将 return 用户语言中 Book 的标题。

我试图通过在 Book class 的 __construct () 方法中传递 TokenStorageInterface 来让用户进入实体内部,但原则从不调用 __construct () 方法在那种情况下。

问题简述: __toString () 实体中必须 return 相关实体之一的字段。哪些具体相关的实体 - 取决于当前用户。如何正确实施?

这是可能的解决方案之一:

请不要管实体 __construct

我假设你有 translations 的实体。你的实体可以(应该)有像 setCurrentLocale 这样的方法来了解当前的语言环境。方法可以手动调用或在例如Doctrine2 postLoad 事件:

public function setCurrentLocale(string $locale)
{
    $this->locale - $locale;
}

现在 __toString 正在翻译,例如title 您的实体可以获取正确的翻译。