Php 请求的控制器无法映射到现有控制器类。zf3在一个模块中路由到多个控制器

Php 请求的控制器无法映射到现有控制器类。zf3在一个模块中路由到多个控制器,php,model-view-controller,controller,routes,zend-framework3,Php,Model View Controller,Controller,Routes,Zend Framework3,当我试图在一个模块中创建到多个控制器的路由时 调用IndexController的indexAction()。但是,它不适用于车辆控制器。我试图调用工厂中的车辆控制器——未成功 'controllers' => [ 'factories' => [ Controller\IndexController::class => InvokableFactory::class, Controller\VehiclesController::cla

当我试图在一个模块中创建到多个控制器的路由时

调用
IndexController
indexAction()。但是,它不适用于
车辆控制器
。我试图调用
工厂中的
车辆控制器
——未成功

'controllers' => [
    'factories' => [
        Controller\IndexController::class => InvokableFactory::class,
        Controller\VehiclesController::class => InvokableFactory::class,
    ],
    ],
使用
ServiceManager
功能

'controllers' => [
    'factories' => [
        Controller\VehiclesController::class => function($sm){
            $vehiclesService=$sm->get('Application\Model\VehiclesTable');
            return new Controller\VehiclesController($vehiclesService);
        }
    ],
],

您可能正在执行以下操作来调用
module.config.php

'controllers' => [
    'factories' => [
        Controller\IndexController::class => InvokableFactory::class,
        Controller\IndexController::class => InvokableFactory::class,
    ],
],
因此,您可能在
工厂
键下使用相同的控制器名称两次。可能如上所述,也可能不同

因此,在
controllers
键的
factories
子键下定义它们一次,如下所示

'controllers' => [
    'factories' => [
        Controller\IndexController::class => InvokableFactory::class,
        Controller\VehiclesController::class => InvokableFactory::class,
    ],
],

我刚刚调用了
工厂
下的控制器,就像你的问题一样。也尝试使用
ServiceManager
函数调用它,但也不起作用。您的应用程序中的
data
文件夹中是否有任何缓存文件?如果是,请删除所有内容,然后重试。我看到您正在通过控制器的构造函数传递一些服务,为此,您必须为控制器创建一个工厂。在这种情况下,使用
InvokableFactory::class
将不起作用。
'controllers' => [
    'factories' => [
        Controller\IndexController::class => InvokableFactory::class,
        Controller\VehiclesController::class => InvokableFactory::class,
    ],
],