2016-05-12 156 views
2

我有一个应用程序与三个模块与几个控制器在每个模块中。所有这些控制器工作正常。但现在,我试图在我的Privado模块中创建一个新的控制器,在此路由/域/ privado/querys/querys中。ZF2找不到控制器

我创建了控制器,她认为,和配置在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 \控制器\ Querysasdad(解析为无效的控制器类或别名:Privado \控制器\ Querysasdad)

无异常

这是我有太多的错误,如果我写了一个不存在于url中的控制器!

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

回答

0

我发现我的错误可怕:

在我module.config.php我在invocables ...

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

我修复problema,去掉 “控制器”,从“Privado \控制器\ QuerysController”和‘Privado \控制器\的TestController’

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

数组的关键并不需要是一个路径,它只是需要一个唯一的字符串,来识别控制器。例如,它可以是:'QuerysController'=> Controller \ QuerysController :: class或者甚至可以使用 'SomethingCrazy'=> Controller \ QuerysController :: class,只要您在上面的第7行中相应地引用它即可 – STLMikey