zf3-从Module.php调用自定义插件

zf3-从Module.php调用自定义插件,php,zend-framework,zend-framework2,zend-framework3,Php,Zend Framework,Zend Framework2,Zend Framework3,我是Zend Framework 3的新手。以及将我的Zend Framework 2应用程序迁移到Zend Framework 3 目前我正在尝试从应用程序模块的Module.php文件调用userPlugin 这是我的密码 public function onRoute(MvcEvent $e) { $sm = $e->getApplication()->getServiceManager(); $userPlugin = $sm->get('Control

我是Zend Framework 3的新手。以及将我的Zend Framework 2应用程序迁移到Zend Framework 3

目前我正在尝试从应用程序模块的
Module.php
文件调用
userPlugin

这是我的密码

public function onRoute(MvcEvent $e)
{
    $sm = $e->getApplication()->getServiceManager();
    $userPlugin = $sm->get('ControllerPluginManager')->get('userPlugin');
    $userPlugin->setServiceManager($e->getApplication()->getServiceManager());
    $checkLogin = $userPlugin->isLoggedIn();
}
在我的
module.config.php

'controller_plugins' => array(
    //This is also not working
    //'invokables' => array(
    //    'userPlugin' => 'User\Controller\Plugin\UserPlugin',
    //),
    'factories' => [
        Controller\Plugin\UserPlugin::class => InvokableFactory::class,
    ],
    'aliases' => [
        'userPlugin' => Controller\Plugin\UserPlugin::class,
    ]
)
但是得到这个错误

未捕获Zend\ServiceManager\Exception\ServiceNotFoundException:在插件管理器Zend\Mvc\Controller\PluginManager中找不到名为“UserPlugin”的插件

我哪里错了?

使用下面的代码

 $sm = $e->getApplication()->getServiceManager();
 $checkLogin = $sm->get('ControllerPluginManager')
                  ->get(Controller\Plugin\UserPlugin::class)
                  ->isLoggedIn();
使用下面的代码

 $sm = $e->getApplication()->getServiceManager();
 $checkLogin = $sm->get('ControllerPluginManager')
                  ->get(Controller\Plugin\UserPlugin::class)
                  ->isLoggedIn();

ZF3对别名的要求可能更严格一些。我一点也不确定!您注册它时没有大写字母,而module.php正在调用:“UserPlugin”。最好使用FQCN,如:
->get(\MyModule\Controller\Plugin\UserPlugin::class)
而不是
->get('UserPlugin')
。你能检查一下这是否有效吗?@Kwido我也试过用你的解决方案。但是对我不起作用。你能展示
Module.php
类吗,或者你如何附加到
路由
事件?另外,您的插件是否在控制器中工作?与
->get('userPlugin')
相关的错误消息和代码不匹配。“UserPlugin”(错误消息中)不是“UserPlugin”(如您的示例所示)@Kwido是正确的。您确定使用的是
->get('userPugin')
而不是
->get('UserPlugin')
.ZF3可能对别名要求更严格一些。我一点也不确定!您注册它时没有大写字母,而module.php正在调用:“UserPlugin”。最好使用FQCN,如:
->get(\MyModule\Controller\Plugin\UserPlugin::class)
而不是
->get('UserPlugin')
。你能检查一下这是否有效吗?@Kwido我也试过用你的解决方案。但是对我不起作用。你能展示
Module.php
类吗,或者你如何附加到
路由
事件?另外,您的插件是否在控制器中工作?与
->get('userPlugin')
相关的错误消息和代码不匹配。“UserPlugin”(错误消息中)不是“UserPlugin”(如示例所示)@Kwido是正确的。您确定使用的是
->get('userPugin')
而不是
->get('UserPlugin')