我是Zend Framework的新手。当我运行程序时,我得到以下异常:
我已经尝试了堆栈溢出和其他资源以及其他方法的所有解决方案。请帮帮我们。
配置/ modules.config.php
<?php
return [
'Zend\ServiceManager\Di',
'Zend\Session',
'Zend\Mvc\Plugin\Prg',
'Zend\Mvc\Plugin\Identity',
'Zend\Mvc\Plugin\FlashMessenger',
'Zend\Mvc\Plugin\FilePrg',
'Zend\Mvc\I18n',
'Zend\Mvc\Console',
'Zend\Log',
'Zend\Form',
'Zend\db',
'Zend\Cache',
'Zend\Router',
'Zend\Validator',
'ZendDeveloperTools',
'Application',
'Album'
];
?>
答案 0 :(得分:0)
我认为该设置与Zend Framework 3的设置非常相似。由于我使用它并因此使用该代码,我将向您展示该设置。
您提供的modules.config.php
文件示例与您为我们截屏(ted?)的错误消息不符。
如果无法加载通过modules.config.php
文件请求的模块,则会出现另一个错误,即:
致命错误:未捕获的Zend \ ModuleManager \ Exception \ RuntimeException:无法初始化模块(DEMO \ NOT \ FOUND \ MODULE)。在第203行的C:\ xampp \ htdocs \ DEMO_PROJECT \ vendor \ zendframework \ zend-modulemanager \ src \ ModuleManager.php
Kwido在下面的评论中正确地指出,这个答案的其余部分与OP的问题无关。将它留在这里,万一其他人觉得它很方便。
我认为你正在做的是尝试从某个地方获取Router
课程(基于这些内容:$serviceLocator->get(Router::class)
),基于这样一个事实{{1}您的供应商文件夹中的文件夹和浮动的zendframework/zend-router
命名空间。
但是,在Zend\Router
模块中,您会找到zend-router
类(ConfigProvider
)。在这里,您将找到此函数,它返回配置:
vendor/zendframework/zend-router/src/ConfigProvider.php
此方法初始化/**
* Provide default container dependency configuration.
*
* @return array
*/
public function getDependencyConfig()
{
return [
'aliases' => [
'HttpRouter' => Http\TreeRouteStack::class,
'router' => RouteStackInterface::class,
'Router' => RouteStackInterface::class,
'RoutePluginManager' => RoutePluginManager::class,
],
'factories' => [
Http\TreeRouteStack::class => Http\HttpRouterFactory::class,
RoutePluginManager::class => RoutePluginManagerFactory::class,
RouteStackInterface::class => RouterFactory::class,
],
];
}
(更深入了解事件here)。
以下行允许您执行类似On bootstrap
(在ZF2中)或$this->getServiceManager()->get('Router')
(在ZF3中)的操作:
$container->get('Router')
但是,你不能'router' => RouteStackInterface::class,
'Router' => RouteStackInterface::class,
!这是因为它只被注册为别名!您必须通过字符串$serviceLocator->get(Router::class)
或router
获取它。