如何在 ZF3 上的控制器插件中获取翻译器
How to get translator inside controller plugin on ZF3
我想创建一个插件以在控制器上使用 zend-i18n/translate。在 zf2 上,我有一个控制器插件可以为我执行此操作,但在 zf3 上,我无法让它工作。我如何在控制器内使用 zend-i18n 或通过 zf3 的控制器插件使用 zend-i18n?
==========
我刚刚在 zf doc 上找到了我需要的东西:https://docs.zendframework.com/zend-mvc-i18n/services/#mvctranslator-and-translatorfactory
如果您已经在 module.config.php 上将翻译器配置为工厂,则可以在控制器插件上注入。
您几乎可以执行与 相同的操作。
'service_manager' => [
'factories' => [
\Zend\I18n\Translator\TranslatorInterface::class => \Zend\I18n\Translator\TranslatorServiceFactory::class,
]
]
和
'controller_plugins' => [
'invokables' => [
'translate' => \Zend\I18n\View\Helper\Translate::class
]
]
之后,您可以像这样在控制器操作方法中获取翻译插件:
public someAction(){
$translator = $this->translate;
}
查看 Zend Framework documentation or this Zend Framework blog 以获取有关控制器插件管理器的更多详细信息。
为了在模型和控制器中进行翻译,我在 module.config.php
中进行了此操作
'service_manager' => [
'factories' => [
\Zend\I18n\Translator\Translator::class => \Zend\I18n\Translator\TranslatorServiceFactory::class,
],
],
然后从我的控制器或初始化了 serviceContainer 的模型我做:
$this->myVar = $serviceContainer->get(\Zend\I18n\Translator\Translator::class);
然后我可以通过
访问它
$this->myVar->translate('lorem ipsum');
我想创建一个插件以在控制器上使用 zend-i18n/translate。在 zf2 上,我有一个控制器插件可以为我执行此操作,但在 zf3 上,我无法让它工作。我如何在控制器内使用 zend-i18n 或通过 zf3 的控制器插件使用 zend-i18n?
========== 我刚刚在 zf doc 上找到了我需要的东西:https://docs.zendframework.com/zend-mvc-i18n/services/#mvctranslator-and-translatorfactory
如果您已经在 module.config.php 上将翻译器配置为工厂,则可以在控制器插件上注入。
您几乎可以执行与
'service_manager' => [
'factories' => [
\Zend\I18n\Translator\TranslatorInterface::class => \Zend\I18n\Translator\TranslatorServiceFactory::class,
]
]
和
'controller_plugins' => [
'invokables' => [
'translate' => \Zend\I18n\View\Helper\Translate::class
]
]
之后,您可以像这样在控制器操作方法中获取翻译插件:
public someAction(){
$translator = $this->translate;
}
查看 Zend Framework documentation or this Zend Framework blog 以获取有关控制器插件管理器的更多详细信息。
为了在模型和控制器中进行翻译,我在 module.config.php
中进行了此操作'service_manager' => [
'factories' => [
\Zend\I18n\Translator\Translator::class => \Zend\I18n\Translator\TranslatorServiceFactory::class,
],
],
然后从我的控制器或初始化了 serviceContainer 的模型我做:
$this->myVar = $serviceContainer->get(\Zend\I18n\Translator\Translator::class);
然后我可以通过
访问它$this->myVar->translate('lorem ipsum');