首页 文章

ZF3如何处理AbstractContoller中的getServiceLocator() - > get('translator')

提问于
浏览
-2

我的应用程序(ZF3)中有一个抽象控制器,它扩展了我的所有模块控制器 .

我在这里调用我的基本翻译器并且每个模块都应用翻译器,但是当从ZF3中删除getServiceLocator()时,我想知道在扩展控制器中我可以做些什么来创建一个$ this->翻译器 .

这是我在ZF2中使用的:

$this->translator = $this->getServiceLocator()->get('translator');

我找到了这些文档,但这对我来说似乎是另一个目的 .

https://zendframework.github.io/zend-mvc/migration/to-v2-7/#servicelocatoraware-initializers

1 回答

  • 0

    有不同的方法来克服这个问题 .

    首先考虑的解决方案是在每个控制器中注入服务定位器,而不是其他任何东西 . 为了做到这一点,你需要通过构造函数注入它并更改工厂的控制器(如果有很多工厂) .

    当你这样做时,你只能注入翻译而不是容器(服务管理器) .

    初始化器确实是一种方法,但它们可能会在以后删除 . 我宁愿使用delegator . 这样,你不必通过构造函数注入,但是你需要通过setter注入,这意味着你引入了时间耦合......

相关问题