2013-08-16 1 views
4

EDIT: Je viens de trouver la solution par moi-même. Comme mon ContentManagerController étend AbstractRestfulController il n'a naturellement pas d'action d'index implémentée. Le champ 'action' dans le tableau 'defaults' doit donc être remplacé par '' ou null. Ensuite, l'action appropriée en fonction du type de requête HTTP sera invoquée comme prévu. Où était mon esprit?ZF2 - Configuration prioritaire du module fournisseur ZFcUser

Voici le code mis à jour. Changer

'defaults' => array(
    'controller' => 'zfcuser', 
    'action'  => 'index', 
), 

à

'defaults' => array(
    'controller' => 'ContentManager\Controller\ContentManager', 
    'action'  => '', // or null 
), 

--- Original Post ---

Je suis en train de remplacer les voies d'un module fournisseur (ZFcUser) à l'intérieur (ContentManager d'un module personnalisé module.config.php. ContentManagerController étend le UserController d'origine. Je ne veux pas toucher le module.config.php de ZFcUser, car cela pourrait causer des problèmes après une mise à jour prospective via composer. Je veux strictement séparer les configurations faites par moi des fichiers originaux du fournisseur. remplaçant simplement

'route' => '/user', 

à

'route' => '/cms', 

fonctionne pour l'instant, mais il est pas ce que je veux atteindre. Donc, je dois remplacer l'entrée du contrôleur ainsi

'defaults' => array(
    'controller' => 'zfcuser', 
    'action'  => 'index', 
), 

avec

'defaults' => array(
    'controller' => 'ContentManager\Controller\ContentManager', 
), 

Mais cela me donne une erreur 404.

The requested controller was unable to dispatch the request. 

Controller: 
ContentManager\Controller\ContentManager 

Semble que les deux contrôleurs sont en conflit. Lorsque je commente le tableau 'defaults' dans le fichier ZFcUser module.config.php, mon ContentManagerController est alors appelé comme prévu. Je me suis également assuré que mon module est enregistré après le ZFcUser. Donc, la priorité devrait fonctionner, afaik.

J'ai fait beaucoup de recherches mais je n'arrive pas à comprendre ce qui se passe ici. Les stratégies décrites here et there ne font pas l'affaire.

return array(
    'controllers' => array(
     'invokables' => array(
      'ContentManager\Controller\ContentManager' => 'ContentManager\Controller\ContentManagerController', 
     ), 
    ), 
    'router' => array(
     'routes' => array(
      'zfcuser' => array(
       'type' => 'Literal', 
       'priority' => 1000, 
       'options' => array(
        'route' => '/cms', 
        'defaults' => array(
         'controller' => 'ContentManager\Controller\ContentManager', 
        ), 
       ), 
       'may_terminate' => true, 
       'child_routes' => array(
        . 
        . 
        . 
       ), 
      ), 
     ), 
    ), 
); 

Merci pour votre aide!

Répondre

1

Auteur trouvé la soulution, mais n'a pas répondu à la question (il l'éditer), je suis juste copier-coller à la réponse.

Je viens de trouver la solution par moi-même. Comme ContentManagerController étend AbstractRestfulController il n'a naturellement pas d'action d'index implémentée. Le champ 'action' dans le tableau 'defaults' doit donc être remplacé par '' ou null. Ensuite, l'action appropriée en fonction du type de requête HTTP sera invoquée comme prévu. Où était mon esprit?

Voici le code mis à jour.Changer

'defaults' => array(
    'controller' => 'zfcuser', 
    'action'  => 'index', 
), 

à

'defaults' => array(
    'controller' => 'ContentManager\Controller\ContentManager', 
    'action'  => '', // or null 
), 
Questions connexes