Zend framework2 Zend\Mvc\Controller\PluginManager::get无法获取或创建translate的实例
我已经编写了一个控制器插件,使用ZF2.5获得MVC转换器 这是我的翻译控制器插件Zend framework2 Zend\Mvc\Controller\PluginManager::get无法获取或创建translate的实例,zend-framework2,Zend Framework2,我已经编写了一个控制器插件,使用ZF2.5获得MVC转换器 这是我的翻译控制器插件 namespace Freedom\Controller\Plugin; use Zend\Mvc\Controller\Plugin\AbstractPlugin; use Zend\I18n\Translator\Translator; /** * Translate * */ class Translate extends AbstractPlugin { /** *
namespace Freedom\Controller\Plugin;
use Zend\Mvc\Controller\Plugin\AbstractPlugin;
use Zend\I18n\Translator\Translator;
/**
* Translate
*
*/
class Translate extends AbstractPlugin
{
/**
*
* @var Translator
*/
private $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
/**
* Translate message
* @param string $message
* @param string $textDomain
* @param string $locale
* @return string
*/
public function __invoke($message, $textDomain = 'default', $locale = null)
{
return $this->translator->translate($message, $textDomain, $locale);
}
/**
*
* @return Translator
*/
function getTranslator()
{
return $this->translator;
}
}
这是一家工厂
namespace Freedom\Controller\Plugin\Service;
use Zend\ServiceManager\FactoryInterface;
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Freedom\Controller\Plugin\Translate;
/**
* TranslateFactory
*
*/
class TranslateFactory implements FactoryInterface
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
return new Translate($container->get('translator'));
}
public function createService(ServiceLocatorInterface $container)
{
return $this($container->getServiceLocator(), Translate::class);
}
}
最后是在我的module.config中
'controller_plugins' => [
'factories' => [
'checkRedirect' => 'Freedom\Controller\Plugin\Service\CheckRedirectFactory',
'translate' => 'Freedom\Controller\Plugin\Service\TranslateFactory',
],
],
我的问题是,我得到了这个错误,我不明白为什么
Zend\Mvc\Controller\PluginManager::get was unable to fetch or create an instance for translate
正如您所见,我已经在module.config中注册了插件,但是插件管理器找不到它。我已检查配置中是否存在controller_plugins密钥,以及我的名称空间是否正确。我还有另一个名为checkRedirect的插件,它会产生相同的错误
我简直搞不懂发生了什么事,请有人告诉我我错过了什么,非常感谢。请试试这个,可能对你有帮助 我认为一切正常,但你需要更新这个
'controller_plugins' => [
'factories' => [
'checkRedirectPlugin' => 'Freedom\Controller\Plugin\Service\CheckRedirectFactory',
'translatePlugin' => 'Freedom\Controller\Plugin\Service\TranslateFactory',
],
'aliases' =>[
'checkRedirect' => 'checkRedirectPlugin',
'translate' => 'translatePlugin'
]
],
现在使用别名,您现在可以从控制器访问
$this->translate()
我终于发现了问题,我是从调用插件,它不工作。从行动中呼叫,一切正常。感谢您的回复,我终于找到了问题,请查看我的答案。