2016-05-12 160 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