ZF2找不到控制器

时间:2016-05-12 09:49:52

标签: layout controller zend-framework2

我有一个带有三个模块的应用程序,每个模块中有几个控制器。所有这些控制器工作正常。但是现在,我正在尝试在我的Privado模块中创建一个新的控制器,在这个route / domain / privado / querys / querys中。

我在 module.config.php中创建了控制器,她的视图和配置

    'privado/querys' => array(
            'type'    => 'Literal',
            'options' => array(
                    'route'    => '/privado/querys',
                    'defaults' => array(
                            '__NAMESPACE__' => 'Privado\Controller',
                            'controller'    => 'Index',
                            'action'        => 'index',
                    ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                    'default' => array(
                            'type'    => 'Segment',
                            'options' => array(
                                //'route'    => '/[:controller[/:action[/:id]]]',
                                'route'    => '/[:controller[/:action][/:id/:system]]',
                                'constraints' => array(
                                            'controller'    => '[a-zA-Z][a-zA-Z0-9_-]*',
                                            'action'        => '[a-zA-Z][a-zA-Z0-9_-]*',
                                            'id'            => '[0-9]*',
                                            'system'        => '[a-zA-Z][a-zA-Z0-9_-]*'
                                            //'system'  => '[0-9]*'
                                ),
                                'defaults' => array(
                                ),
                            ),
                    ),
            ),
        ), 
'controllers' => array(
    'invokables' => array(
        'Privado\Controller\Index'              => Controller\IndexController::class,
        'Privado\Controller\Usuario'            => Controller\UsuarioController::class,
        'Privado\Controller\Profile'            => Controller\ProfileController::class,
        'Privado\Controller\Sistemas'           => Controller\SistemasController::class,
        'Privado\Controller\UnidadesServicio'   => Controller\UnidadesServicioController::class,
        'Privado\Controller\Metales'            => Controller\MetalesController::class,
        'Privado\Controller\Pases'              => Controller\PasesController::class,
        'Privado\Controller\Estado'             => Controller\EstadoController::class,
        'Privado\Controller\QuerysController'   => Controller\QuerysController::class,
        'Privado\Controller\TestController'     =>  Controller\TestController::class
    ),
),
'view_manager' => array(
    'display_not_found_reason' => true,
    'display_exceptions'       => true,
    'doctype'                  => 'HTML5',
    'not_found_template'       => 'error/404',
    'exception_template'       => 'error/index',
    'template_map' => array(
        'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
        'privado/index/index' => __DIR__ . '/../view/privado/index/index.phtml',
        'error/404'               => __DIR__ . '/../view/error/404.phtml',
        'error/index'             => __DIR__ . '/../view/error/index.phtml',
    ),
    'template_path_stack' => array(
        __DIR__ . '/../view',
    ),
    /*
     * Con este array de parámetros permitimos enviar datos y no mostrar vista
     */
    'strategies' => array(
            'ViewJsonStrategy',
    ),          
),

控制器从另一个模块返回布局控制器从Publico模块返回布局。我只是明白我错过了什么。

修改1:

屏幕上显示错误的布局和消息:

  

发现404错误页面未找到。

     

请求的控制器无法映射到现有控制器   类。

     

控制器:       Privado \ Controller \ Querysasdad(解析为无效的控制器类或别名:Privado \ Controller \ Querysasdad)

     

没有例外

这也是我所犯的错误,如果我写了一个url中不存在的控制器!

我在其他模块中按照相同的步骤创建了另一个控制器:创建控制器,创建视图,配置module.config.php并正常工作。

1 个答案:

答案 0 :(得分:0)

我发现了一个可怕的错误:

在我的module.config.php中,我有invocables ...

'Privado\Controller\QuerysController'   => Controller\QuerysController::class,
'Privado\Controller\TestController'     =>  Controller\TestController::class

我修复了问题,删除" Controller"来自" Privado \ Controller \ QuerysController"和" Privado \ Controller \ TestController"

'Privado\Controller\Querys'   => Controller\QuerysController::class,
'Privado\Controller\Test'     =>  Controller\TestController::class