【问题标题】:Error finding module controller in zf2在 zf2 中查找模块控制器时出错
【发布时间】:2014-06-11 22:33:37
【问题描述】:

我遇到了一个问题,当我链接到我的模块时,控制器会抛出错误:

Fatal error: Class 'Rooms\Controller\RoomController' not found in C:\wamp\www\smtest\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php on line 170

现在我还是 ZF2 的新手,但我了解到这意味着我的模块在名称空间或自动加载器中存在错误,这就是信息:

module.config 控制器路由

'controllers' => array(
    'invokables' => array(
        'Rooms\Controller\Room' => 'Rooms\Controller\RoomController',
    ),
),

模块.php

namespace Rooms;

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

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

RoomController.php

namespace Rooms\Controller;

class RoomsController extends AbstractActionController
{
private $usersTable;

//retrieve
public function indexAction()
{
    return new ViewModel();
}

从主页链接到模块

$this->url('room/default', array('controller' => 'room', 'action' => 'index'))

这里关于堆栈溢出或其他地方的每个类似问题都没有解决这个问题,我花了几个小时试图解决这个问题,我直接从我的应用程序的另一部分中的另一个模块复制了模块,将其剥离然后对其进行了修改,因此我不必进行太多更改并遇到这些问题。

【问题讨论】:

  • class RoomsController 中的额外s 是复制粘贴错字还是在您的原始代码中?因为这可以解释错误
  • @Pankrates 它的意图,模块的实际名称是Rooms
  • 很公平,但可调用对象仍然必须匹配确切的控制器类名称。看我的回答。您可以保留class RoomsController,但您必须将可调用类设置为'Rooms\Controller\RoomsController'

标签: php zend-framework controller zend-framework2


【解决方案1】:

你对invokables控制器RoomController的定义

'controllers' => array(
    'invokables' => array(
        'Rooms\Controller\Room' => 'Rooms\Controller\RoomController',
    ),
),

不匹配你的控制器的类名RoomsController

namespace Rooms\Controller;

class RoomsController extends AbstractActionController
{

将后者更改为class RoomController 应该可以修复错误

【讨论】:

  • 我真的不认为我理解它,但它确实有效!非常感谢。
  • 我确实明白,完全有道理,只是复制和粘贴错误。
  • 正如我所怀疑的那样,但这些有时可能是最难追踪的 :) 很高兴它解决了您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多