PluginManager :: Get无法获取或为FileQueryPlugin创建实例



我正在使用Zend Framework 2.3.9。我正在尝试使用依赖项注入从视图助手来调用插件" filequeryplugin"。

我尝试将"插件"更改为模块中的" controler_plugins",但我得到了相同错误消息的变体。

这是Module.config.php

'view_helpers' => array(
    'invokables'=> array(
        'MenuBuildLink' => 'qatoolsViewHelperMenuBuildLink',
    ),
    'factories' => array(
        'FileQuery' => function ($container, $requestedName) {
            return new qatoolsViewHelperFileQuery($container->getServiceLocator()->get(ZendMvcControllerPluginManager::class)->get('FileQueryPlugin'));
        },
    ),
),
'plugins' => array(
    'invokables'=> array(
        'FileQueryPlugin' => 'qatoolsPluginsFileQueryPlugin'
    ),
),

这是filequeryplugin.php

<?php
namespace qatoolsPlugins;
namespace ZendView;
use ZendI18nTranslatorTranslatorAwareInterface;
use ZendServiceManagerAbstractPluginManager;
use ZendServiceManagerConfigInterface;
class FileQueryPlugin extends AbstractPluginManager {
    public function fileQuery($filename) {
        $fileQuery = $this->getServiceLocator->get('qatoolsModelGroupFilesTable');
        $modified = $fileQuery->getModifiedBy($filename);
        return $modified;
    }
    public function validatePlugin($plugin) {
    }
}
?>

我正在看到以下错误消息。

zend serviceManager exception servicenotfoundException

文件:

/mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:550

消息:

ZendMvcControllerPluginManager::get was unable to fetch or create an instance for FileQueryPlugin

堆栈跟踪:

#0 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): ZendServiceManagerServiceManager->get('FileQueryPlugin', true)
#1 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/PluginManager.php(82): ZendServiceManagerAbstractPluginManager->get('FileQueryPlugin', Array, true)
#2 /mnt/c/git-repos/qatools/module/qatools/config/module.config.php(405): ZendMvcControllerPluginManager->get('FileQueryPlugin')
#3 [internal function]: qatoolsModule->{closure}(Object(ZendViewHelperPluginManager), 'filequery', 'FileQuery')
#4 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(923): call_user_func(Object(Closure), Object(ZendViewHelperPluginManager), 'filequery', 'FileQuery')
#5 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(259): ZendServiceManagerServiceManager->createServiceViaCallback(Object(Closure), 'filequery', 'FileQuery')
#6 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(217): ZendServiceManagerAbstractPluginManager->createServiceViaCallback(Object(Closure), 'filequery', 'FileQuery')
#7 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(633): ZendServiceManagerAbstractPluginManager->createFromFactory('filequery', 'FileQuery')
#8 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(593): ZendServiceManagerServiceManager->doCreate('FileQuery', 'filequery')
#9 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(525): ZendServiceManagerServiceManager->create(Array)
#10 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): ZendServiceManagerServiceManager->get('FileQuery', true)
#11 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php(377): ZendServiceManagerAbstractPluginManager->get('FileQuery', NULL)
#12 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php(396): ZendViewRendererPhpRenderer->plugin('FileQuery')
#13 /mnt/c/git-repos/qatools/module/qatools/view/partials/job-wizard.phtml(4740): ZendViewRendererPhpRenderer->__call('FileQuery', Array)
#14 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php(506): include('/mnt/c/git-repo...')
#15 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/Helper/Partial.php(61): ZendViewRendererPhpRenderer->render(NULL, NULL)
#16 [internal function]: ZendViewHelperPartial->__invoke('partials/job-wi...')
#17 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php(399): call_user_func_array(Object(ZendViewHelperPartial), Array)
#18 /mnt/c/git-repos/qatools/module/qatools/view/qatools/jobs/index.phtml(1064): ZendViewRendererPhpRenderer->__call('partial', Array)
#19 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php(506): include('/mnt/c/git-repo...')
#20 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/View.php(205): ZendViewRendererPhpRenderer->render(NULL)
#21 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/View.php(233): ZendViewView->render(Object(ZendViewModelViewModel))
#22 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/View/View.php(198): ZendViewView->renderChildren(Object(ZendViewModelViewModel))
#23 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/Mvc/View/Http/DefaultRenderingStrategy.php(103): ZendViewView->render(Object(ZendViewModelViewModel))
#24 [internal function]: ZendMvcViewHttpDefaultRenderingStrategy->render(Object(ZendMvcMvcEvent))
#25 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(ZendMvcMvcEvent))
#26 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): ZendEventManagerEventManager->triggerListeners('render', Object(ZendMvcMvcEvent), Array)
#27 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(352): ZendEventManagerEventManager->trigger('render', Object(ZendMvcMvcEvent))
#28 /mnt/c/git-repos/qatools/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(327): ZendMvcApplication->completeRequest(Object(ZendMvcMvcEvent))
#29 /mnt/c/git-repos/qatools/public/index.php(22): ZendMvcApplication->run()
#30 {main}

您的命名中有不一致。

您的工厂功能正在调用以下:

return new qatoolsViewHelperFileQuery(...);

当您的className为 FileQueryPlugin

您应该重命名课程或致电new qatoolsViewHelperFileQueryPlugin(...);

更新

您需要在FileQueryPlugin.php文件中删除较低的命名空间声明,并且上部应与您在工厂中调用的命名空间相对应(qatoolsViewHelperFileQueryPlugin

namespace qatoolsPlugins; // <--- update this so it corresponds
namespace ZendView;  // <--- remove this one

您还应确保文件所在的文件夹对应于路径qatoolsViewHelperFileQuery,因此文件夹树看起来应该像这样:

- qatools
   - View 
     - Helper
       - FileQueryPlugin.php

最新更新