2014-07-07 43 views
3

我正在通過zend框架2教程應用程序工作。我已經建立了我的相冊模塊目錄如下:模塊(專輯)無法初始化zf2教程

enter image description here

我遇到了一個錯誤,當我開始我的MAMP服務器,Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (Album) could not be initialized.'

如果我從下面的代碼註釋掉Album模塊(在/config/application.config.php):

'modules' => array(
    'Application', 
    'Album', 
), 

我到了骨架應用程序主頁。 這裏是我的/module/Album/Module.php代碼:

namespace Album; 

use Zend\ModuleManager\Feature\AutoloaderProviderInterface; 
use Zend\ModuleManager\Feature\ConfigProviderInterface; 
use Album\Model\Album; 
use Album\Model\AlbumTable; 
use Zend\Db\ResultSet\ResultSet; 
use Zend\Db\TableGateway\TableGateway; 

class Module implements AutoloaderProviderInterface, ConfigProviderInterface { 

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’; 
} 

public function getServiceConfig() { 
    return array(
     ’factories’ => array(
      ’Album\Model\AlbumTable’ => function($sm) { 
       $tableGateway = $sm->get(’AlbumTableGateway’); 
       $table = new AlbumTable($tableGateway); 
       return $table; 
      }, 
      ’AlbumTableGateway’ => function ($sm) { 
       $dbAdapter = $sm->get(’Zend\Db\Adapter\Adapter’); 
       $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Album()); 
       return new TableGateway(’album’, $dbAdapter, null, $resultSetPrototype); 
      }, 
     ), 
    ); 
} 
} 

這裏是我的/module/Album/config/module.config.php代碼:

return array(
’controllers’ => array(
    ’invokables’ => array(
     ’Album\Controller\Album’ => ’Album\Controller\AlbumController’, 
    ), 
), 

’view_manager’ => array( 
    ’template_path_stack’ => array(
     ’album’ => __DIR__ . ’/../view’, 
    ), 
), 

'router' => array(
    'routes' => array(
     'album' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/album[/][:action][/:id]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id' => '[0-9]+', 
       ), 
       'defaults' => array(
        'controller' => 'Album\Controller\Album', 
        'action' => 'index', 
       ), 
      ), 
     ), 
    ), 
),' 
); 

我已經通過誰已經在類似的情況下,跑了幾個人看,但他們的問題是由於拼錯/錯誤命名的類。我沒有看到我的代碼有任何問題(甚至直接從教程複製/粘貼)。

有人可以給我一些建議嗎?

感謝

+0

嘗試更新'composer'文件。 –

+0

@KunalDethe在添加一些東西到作曲家文件或運行作曲家更新命令? –

+0

我創建了一個新的骨架應用程序,再次嘗試這個,我有同樣的問題。教程中有什麼錯誤嗎?我會很驚訝,但我真的不知道它可能是什麼 –

回答

0

唯一的原因,我能看到的是,你應該與正常的單引號'替換所有。 使用可能會導致意外的行爲。

+0

我認爲這可能只是一個複製/粘貼問題。我取代了所有這些,並沒有改變。 –

+0

我偶然發現有人說目錄結構錯了,但他們沒有說出正確的結構應該是什麼。上面的屏幕截圖正是教程中的內容 –

10

我有同樣的問題,解決方案是開始每個.php文件與<?php 這不是在教程中清楚(如果你只是從那裏複製代碼),這是我得到同樣的例外。

+3

似乎是我的正確答案... –

0

教程module.config.php文件中有錯誤。 更改'id' => '[0-9]+','id' => '[0-9]*', +表示一個或多個數字。如果您只是撥打http://zf2-tutorial.localhost/album/,則網址中沒有數字,因此重寫規則不匹配。從+變更爲*(0個或更多)

0

我有相同的問題,我的問題和解決方案是

在教程中的第一個命令是:

php composer.phar create-project --stability="dev" zendframework/skeleton-application path/to/install 

它被切斷我的屏幕,所以我複製/粘貼命令到命令行而不讀結束。所以我的app目錄結構包含一個目錄./path/to/install,其中包含所有安裝文件,包括application.config.php。

將/ path/to/install /移動到應用程序根目錄中的所有內容都允許Zend找到相冊模塊。

注:/路徑/到/安裝/模塊包含相冊模塊,但如果你這樣做

mv ./path/to/install/* . 

所以一定要在/路徑移動應用程序模塊/到/安裝/模塊插入會失敗app_root_dir /模塊/。

-1

請檢查您的模塊:: getConfig(), 和玩耍: return include __DIR__ . '/../config/module.config.php'; 我已經加入 '../' 前綴,它工作得很好。

0

您可以檢查composer.json天氣包括以下內容:

"autoload": { 
    "psr-4": { 
     "Application\\": "module/Application/src/", 
     "Album\\": "module/Album/src" 
    } 
},