2013-05-30 4 views
3

Мой Enviroment (Zend Server):ZF 2: обучающая приложение "Config объединяемых должен быть массивом [...]

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.

Ps. Наушник, я не использовал Xdebug (+ PHPStorm), и когда, например, я поставил точку останова где-то в config/module.config.php, он пропускает эту точку останова и входит (она даже не отображается) и переходит в файлы библиотеки ZF (где, например, другая точка останова). Это нормально, или я делаю это неправильно?

ответ

1

Ваш файл module/Album/config/module.config.php пуст, в то время как он должен возвращать конфигурационный массив (как в примере кода, который вы опубликовали).

+0

Моя глупая ошибка ... я неправильно понял ... я понимаю, что это должно быть в 'Этот метод просто загружает файл config/module.config.php .'. Спасибо за ваши глаза. –

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 для пропусков и т. Д. Удачи!