2016-12-24 59 views
0

時解析爲無效的控制器類或別名我在我的應用程序模塊的配置如下:ZF2新模塊控制器使用工廠

'controllers' => [ 
     'factories' => [ 
      Application\Controller\IndexController::class => Application\Controller\IndexControllerFactory::class 
     ], 
    ], 

能正常工作。現在即時通訊我serve module我有幾乎相同的:

'controllers' => array(
        /** 
        'invokables' => array(
          'Serve\Controller\Index' => 'Serve\Controller\IndexController', 
        ), 
        */ 

        'factories' => array(
          Controller\IndexController::class => Serve\Controller\IndexControllerFactory::class 
        ) 

      ), 

當我加載網頁我通過API的服務控制器訪問。這樣做的時候,我得到的網頁上這樣的問題:

Serve\Controller\Index (resolves to invalid controller class or alias: Serve\Controller\Index)

就像我說的即時訪問通過API的服務控制器,通過系統的API請求時,它可能是一個設置問題。

請告訴我有趣的是,當我做到這一點的工作原理:

'controllers'=>array(
    'invokables' => array(
        'Serve\Controller\Index' => 'Serve\Controller\IndexController', 
      )), 

不知道什麼是錯在這裏

UPDATE:

這似乎工作:

'factories' => array(
        'Serve\Controller\Index' => IndexControllerFactory::class 
      )  

但是ID喜歡使用::class語法

回答

0

當您映射到控制器時,問題出現在您的路由配置中:Serve\Controller\Index但您從未在您的module.config內註冊過該控制器的該特定密鑰,或者您的路由中的密鑰爲「」控制器「因爲您在控制器映射中指定了FQCN。

// module.config 
'aliases' => [ 
    'Serve\Controller\Index' => Serve\Controller\IndexController:class, 
], 
'factories' => [ 
    Serve\Controller\IndexController:class => Serve\Controller\IndexControllerFactory::class, 
], 

或者你的路線CONFIGS內不使用Serve\Controller\Index但使用FQCN,以便它使用的工廠,而不是直接您所設定的別名。像:

// route.config 
'serve' => [ 
    'type' => 'literal', 
    'options' => [ 
     'route' => '/serve', 
     'defaults' => [ 
      'controller' => Serve\Controller\IndexController::class, 
      'action'  => 'index', 
     ], 
    ], 
], 

我一直在映射我的類與FQCN的工廠映射,並添加別名,如果我想打電話給他們的名字。因此,您現在可以使用FQCN或其任何別名,例如:Serve\Controller\Index