Symfony,如何在实体中获取当前用户(FOS),未使用 __construct()?
Symfony, how get current user (FOS) in entity, unused __construct()?
我有一个实体 Book
。此Book
的标题以不同的语言存储(实体Book
与BookTranslates
关联为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
您的实体可以获取正确的翻译。
我有一个实体 Book
。此Book
的标题以不同的语言存储(实体Book
与BookTranslates
关联为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
您的实体可以获取正确的翻译。