【问题标题】:Zf2 Fatal error: Class 'BookList\Controller\BookController' not foundZf2 致命错误:找不到类“BookList\Controller\BookController”
【发布时间】:2014-06-27 23:24:29
【问题描述】:

我正在 zf2 中开发一个应用程序。当我在module.config.php 中定义路由并在浏览器中访问它们时,php 会抛出错误:

Fatal error: Class 'BookList\src\BookList\Controller\BookController' not found in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\autoclick\skeleton-application\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php on line 170

这是我的 module.config.php :

return array(
    'controllers' => array(
        'invokables' => array(
            'BookList\src\BookList\Controller\Book' => 'BookList\src\BookList\Controller\BookController'
        )
    ),
    'router' => array(
        'routes' => array(
            'book' => array(
                'type' => 'segment',
                'options' => array(
                    'route' => '/book[/][:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id' => '[0-9]+'
                    ),
                    'defaults' => array(
                        'controller' => 'BookList\src\BookList\Controller\Book',
                        'action' => 'index'
                    )
                )
            )
        )
    ),
    'view_manager' => array(
        'template_path_stack' => array(
            'book' => __DIR__ . '/../view'
        )
    )

我的BookController 命名空间为BookList\src\BookList\Controller

【问题讨论】:

  • 你为你的模块设置了自动加载器吗?

标签: php zend-framework zend-framework2


【解决方案1】:

这应该是:

'controllers' => array(
    'invokables' => array(
        'BookList\Controller\Book' => 'BookList\Controller\BookController' // <- change key and value
    )
),
'router' => array(
    'routes' => array(
        'book' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/book[/][:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id' => '[0-9]+'
                ),
                'defaults' => array(
                    'controller' => 'BookList\Controller\Book', // <- change
                    'action' => 'index'
                )
            )
        )
    )
),

【讨论】:

  • 我试过了,我将我的控制器类的命名空间更改为 BookList\Controller 但它不起作用
  • 您现在遇到什么错误?您的图书控制器的完整路径是什么?
  • 我的完整类路径是skeleton-application\module\BookList\src\BookList\Controller\BookController,错误是致命错误:C:\Program 中找不到类'BookList\Controller\BookController'文件 (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\autoclick\skeleton-application\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php 第 170 行
  • 您还在问题中说您的控制器的命名空间为BookList\src\BookList\Controller,但这应该是BookList\Controller。如果它仍然不起作用,请编辑您的问题以包含控制器类的前几行(直到并包括 class BookController 行)。
【解决方案2】:

你不应该指定路径,而只指定类名,例如删除 \BookList\src\ 部分。命名空间也不应该包含 src 文件夹

【讨论】:

  • 你能发个代码sn-p吗,我不完整。
  • 见@Tim Fountain 回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 2017-06-09
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 2018-05-17
相关资源
最近更新 更多