【发布时间】: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