如何修复Class'Album \ Controller \ AlbumController'未找到错误?

时间:2013-01-31 19:36:32

标签: php zend-framework2

我是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/ enter image description here

以下是相册模块中的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内部发生的事情,但在此之前我打算解决这个问题。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:11)

在Module.php中,'namespace' => array必须为namespaces(复数形式)

您也可以将代码与https://github.com/zendframework/zf2-tutorial

进行比较

答案 1 :(得分:0)

我目前正在使用教程和集成的学说使用。上面的问题可能会在调用composer进行更新后显示“名称空间”,因为ActionController的名称似乎已经神奇地改为AbstractActionController

没有警告。

修改 我在检查后发现原则代码已经过时了,所以通过粘贴代替,控制器名称变得过时了。