【发布时间】:2014-09-08 19:15:51
【问题描述】:
我目前正在开发一个项目,该项目是以前的开发人员与 JMSTranslationBundle 集成的。 此时,我对应用程序进行了一些修改,其中之一是将菜单设置为高度动态的。 (基本上,应用程序的用户逻辑有 3 层,每一层都有自己的菜单)。
菜单存储在数据库中,可通过学说实体访问。为了显示标签,我将 JMSTranslationBundle 使用的“标签代码”作为识别它的键存储到数据库中。 desc 默认为空,直到设置到翻译文件中。 (可使用 _trans 路线进行编辑)。
在JMS的文档中,提到可以实现TranslationContainerInterface,所以当翻译文件(目前是XLIFF文件)编译完成时,每个实现它的类都会被调用以返回一个Message对象列表。这是我的问题:
要实现的功能是静态的,这意味着在调用时,我的模型菜单(处理通过 Doctrine repo 获取的逻辑)不会通过服务管理器加载。这意味着我没有收到存储库对象(因为它是由服务加载并通过控制器):
public function __construct(MenuRepository $objMenuRepo)...
我实现的函数的定义是:
static function getTranslationMessages(){ ... }
我的问题是:如何在该静态函数中获取学说(管理器或存储库)。 (因为这只会在翻译初始生成时调用,而不是由站点本身调用,所以性能不是我担心的问题)。
另外:如果有人有更好的替代方案来提议(这不会涉及摆脱这个翻译包,相信我,现在需要相当长的时间),我很乐意听到他们的意见。
谢谢你:-)
【问题讨论】:
标签: symfony static translation