我正尝试在Zend Skeleton应用程序中创建新模块。我正在关注Zend框架有关Album模块的入门教程。唯一的区别是我使用项目名称而不是专辑。这是我的模块结构。ZF2:Zend框架2.2未找到控制器错误
的module.config.php
内容如下所示。
<?php
namespace Project;
return array(
'router' => array(
'routes' => array(
'project' => array(
'type' => 'segment',
'options' => array(
'route' => '/project[/:action][/:id]',
'contraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+'
),
'defaults' => array(
'controller' => __NAMESPACE__.'/Controller/'.__NAMESPACE__,
'action' => 'index'
)
)
)
)
),
'controllers' => array(
'invokables' => array(
'Project/Controller/Project' => 'Project/Controller/ProjectController',
)
),
'view_manager' => array(
'template_path_stack' => array(
'project' => __DIR__ . '../view',
)
),
);
Module.php
的内容如下。
<?php
namespace Project;
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';
}
}
文件autoload_classmap.php
只返回一个空数组。
<?php
return array()
当我试图访问url http://local.zf2/project/
时,出现以下错误。
Fatal error: Class 'Project/Controller/ProjectController' not found in
/home/bliss/public_html/local.zf2/vendor/zendframework/zendframework/library
/Zend/ServiceManager/AbstractPluginManager.php on line 170
当我看着AbstractPluginManager.php
文件的行170包含$instance = new $invokable();
。
我倾倒了$invokable
变量来查看它的值。它返回string(36) "Project/Controller/ProjectController"
不知何故ZF2无法找到该文件。有人可以帮忙吗?谢谢。
编辑:这里是ProjectController.php
文件的内容。如果它能找到该文件,它会死亡,显示文件的名称。
<?php
namespace Project\Controller;
die(__FILE__);
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class ProjectController extends AbstractActionController
{
public function indexAction()
{
return array();
// return new ViewModel();
}
}
?>
好像它检测到文件但没有发现正确的课程在里面。检查类名和命名空间是否正确。 – claustrofob
已更新的问题,包含'ProjectController'的内容 – traditional
看起来您在module.config.php的缺省值和可调用键中使用了错误的斜杠 –