我正在使用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