我是Zend Framework 2中的新手。我创建了文件夹结构并粘贴了此页面http://framework.zend.com/manual/2.0/en/user-guide/routing-and-controllers.html中有关Zend Framework 2中路由的代码片段。
我收到以下错误:
( ! ) Fatal error: Class 'Album\Controller\AlbumController' not found in C:\wamp\www\zend\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php on line 178
下面是我的classmap_autoload.php
<?php
return array();
以下是Module.php
namespace Album;
class Module {
public function getAutoloaderConfig(){
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__.'/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespace' => array(
__NAMESPACE__ => __DIR__.'/src/'.__NAMESPACE__,
),
),
);
}
public function getConfig(){
return include __DIR__.'/config/module.config.php';
}
}
我的AlbumController
课程已经在module/Album/
以下是相册模块中的module.config.php
:
<?php
return array(
'controllers' => array(
'invokables' => array(
'Album\Controller\Album' => 'Album\Controller\AlbumController',
),
),
// The following section is new and should be added to your file
'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',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);
AlbumCOntroller.php
<?php
namespace Album\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class AlbumController extends AbstractActionController
{
public function indexAction()
{
}
public function addAction()
{
}
public function editAction()
{
}
public function deleteAction()
{
}
}
我不知道为什么会出现这样的错误..我想在渲染页面之前了解Zend内部发生的事情,但在此之前我打算解决这个问题。 我该如何解决这个问题?
答案 0 :(得分:11)
在Module.php中,'namespace' => array
必须为namespaces
(复数形式)
答案 1 :(得分:0)
我目前正在使用教程和集成的学说使用。上面的问题可能会在调用composer进行更新后显示“名称空间”,因为ActionController的名称似乎已经神奇地改为AbstractActionController
。
没有警告。
修改强> 我在检查后发现原则代码已经过时了,所以通过粘贴代替,控制器名称变得过时了。