2016-05-12 4 views
2

J'ai une application avec trois modules avec plusieurs contrôleurs dans chaque module. Tous ces contrôleurs fonctionnent bien. Mais maintenant, j'essaye de créer un nouveau contrôleur dans mon module Privado, dans cette route/domain/privado/querys/querys.ZF2 ne trouve pas Contrôleur

J'ai créé le contrôleur, son point de vue, et config dans 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', 
    ),   
), 

Et le contrôleur me retourne la disposition d'un autre module Le contrôleur me retourne la mise en page à partir du module Publico . Je comprends juste ce que j'ai manqué.

Edit 1:

J'ai la mauvaise mise en page et ce message sur l'écran:

Une erreur 404 se sont produits Page non trouvée.

Le contrôleur demandé n'a pas pu être mappé à une classe de contrôleur existante.

Controller: Privado \ Controller \ Querysasdad (décide de classe non valide de contrôleur ou alias: Privado \ Controller \ Querysasdad)

Aucune exception disponible

C'est l'erreur que j'ai trop , Si j'écris un contrôleur qui n'existe pas dans l'URL!

J'ai créé un autre contrôleur dans un autre module en suivant les mêmes étapes: créer le contrôleur, créer la vue, configurer module.config.php et fonctionne correctement.

Répondre

0

J'ai trouvé mon erreur terrible:

Dans mon module.config.php je en invocables ...

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

je fixe le problema, supprimer "contrôleur" de « Privado \ Controller \ QuerysController » et « Privado \ Controller \ TestController »

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

la clé du tableau n'a pas besoin d'être un chemin, il a juste besoin d'être une chaîne unique pour identifier le contrôleur. Par exemple, il pourrait lire: 'QuerysController' => Controller \ QuerysController :: class ou même 'SomethingCrazy' => Controller \ QuerysController :: class aussi longtemps que vous le faites référence à la ligne 7 ci-dessus – STLMikey