我已经安装了骨架应用程序,它运行良好,我已经创建了新模块。模块名称为"相册"。创建模块后尝试运行代码,我收到错误。这里张贴我的代码:
模块.php
<?php
namespace Album;
use ZendModuleManagerFeatureAutoloaderProviderInterface;
use ZendModuleManagerFeatureConfigProviderInterface;
class Module implements AutoloaderProviderInterface, ConfigProviderInterface
{
public function getAutoloaderConfig()
{
return array(
'ZendLoaderClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'ZendLoaderStandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
}
?>
module.config.php:
<?php
return array(
'controllers' => array(
'invokables' => array(
'AlbumControllerAlbum' => 'AlbumControllerAlbumController',
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);
?>
我收到错误:
Fatal error: Uncaught exception 'ZendModuleManagerExceptionRuntimeException' with message 'Module (Album) could not be initialized.' in D:xampphtdocsprojectsskeletonvendorzendframeworkzendframeworklibraryZendModuleManagerModuleManager.php:195 Stack trace: #0 D:xampphtdocsprojectsskeletonvendorzendframeworkzendframeworklibraryZendModuleManagerModuleManager.php(169): ZendModuleManagerModuleManager->loadModuleByName(Object(ZendModuleManagerModuleEvent))
这对我很有效。只更新composer.json:中的自动加载
"autoload": {
"psr-4": {
"Application\": "module/Application/src/",
"Album\": "module/Album/src/"
}
},
然后运行:
php composer.phar update
我遇到了同样的问题,我通过更正模块的名称来解决它命名空间是包含module.php的文件夹的名称,请确保它们具有相同的名称
默认情况下需要禁用配置缓存
您可以运行:
$ composer development-enable
它会起作用的。
检查文件名"module.php"的Case。在macOS上,文件系统可以找到module.php和module.php。但如果您部署到区分大小写的文件系统(比如Linux的一些变体,例如Centos),您会收到此错误。