ZF 2:教程应用程序,'要合并的配置必须是数组[...]'

时间:2013-05-30 16:51:54

标签: php zend-framework zend-framework2 xdebug zend-server

My Enviroment(Zend Server):

PHP Version 5.4.11
Zend Server Version: 6.0.1
Zend Framework: 1.12.3, 2.1.4
Zend Server Gateway: 0.9.0.201301302347
Build: 69400

所以我试着用ZF2形式的官方教程编写我的第一个应用程序。

骨架应用程序中的ZF版本:2.2

这是我project的链接,如果有人想要更近看它。

config/module.config.php

<?php
return array(
    'controllers' => array(
        'invokables' => array(
            'Album\Controller\Album' => 'Album\Controller\AlbumController',
        ),
    ),
    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        ),
    ),
);

module\Album\Module.php

<?php
namespace Album;

class Module
{
    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\ClassMapAutoloader' => array(
                __DIR__ . '/autoload_classmap.php',
            ),
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ),
            ),
        );
    }

    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }
}

这是我的错误:

Zend\ModuleManager\Listener\Exception\InvalidArgumentException: Config being merged must be an array, implement the Traversable interface, or be an instance of Zend\Config\Config. integer given. in F:\Zend\Apache2\htdocs\learnzf2\vendor\zendframework\zendframework\library\Zend\ModuleManager\Listener\ConfigListener.php on line 317
Call Stack
#   Time    Memory  Function    Location
1   1.0510  137456  {main}( )   ..\index.php:0
2   1.0986  163240  Zend\Mvc\Application::init( )   ..\index.php:18
3   1.2171  345520  Zend\ModuleManager\ModuleManager->loadModules( )    ..\Application.php:253
4   1.2171  345680  Zend\EventManager\EventManager->trigger( )  ..\ModuleManager.php:109
5   1.2171  345936  Zend\EventManager\EventManager->triggerListeners( ) ..\EventManager.php:207
6   1.2195  354296  call_user_func ( )  ..\EventManager.php:468
7   1.2195  354312  Zend\ModuleManager\ModuleManager->onLoadModules( )  ..\EventManager.php:468
8   1.2371  383920  Zend\ModuleManager\ModuleManager->loadModule( ) ..\ModuleManager.php:90
9   1.2390  384984  Zend\EventManager\EventManager->trigger( )  ..\ModuleManager.php:154
10  1.2391  385016  Zend\EventManager\EventManager->triggerListeners( ) ..\EventManager.php:207
11  1.2431  391096  call_user_func ( )  ..\EventManager.php:468
12  1.2431  391112  Zend\ModuleManager\Listener\ConfigListener->onLoadModule( ) ..\EventManager.php:468
13  1.2439  391464  Zend\ModuleManager\Listener\ConfigListener->addConfig( )    ..\ConfigListener.php:127

What is problem with it?我尝试调试它,但我不知道我的代码有什么问题,除非是int值,即使我在config/module.config.php返回数组。

聚苯乙烯。预告片,我没有使用Xdebug(+ PHPStorm),例如我把断点放在某个地方 config/module.config.php,它跳过此断点并进入(它甚至不显示)并进入ZF库文件(例如,其中是另一个断点)。这是正常的还是我做错了?

2 个答案:

答案 0 :(得分:1)

您的module/Album/config/module.config.php文件为空,但它应该返回一个配置数组(就像您发布的示例代码中一样)。

答案 1 :(得分:1)

当我在一段时间后创建一个新模块时,我遇到了同样的问题。我有其他模块已经在工作,但另一个模块现在给出了错误。在我的搜索中,我意识到我写道:

public function getConfig()
{
    return __DIR__ . '/config/module.config.php';
}

而不是:

public function getConfig()
{
    return include __DIR__ . '/config/module.config.php';
}

在我的Module.php文件中。纠正后我的应用程序运行良好!请仔细查看您的代码,特别是在Module.php和module.config.php文件中查看遗漏等等。祝您好运!