Zend framework2 Zend\Mvc\Controller\PluginManager::get无法获取或创建translate的实例

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 { /** *

我已经编写了一个控制器插件,使用ZF2.5获得MVC转换器

这是我的翻译控制器插件

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()

我终于发现了问题,我是从调用插件,它不工作。从行动中呼叫,一切正常。

感谢您的回复,我终于找到了问题,请查看我的答案。