Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je fais quelques test sur le nouveau framework et j'observe un comportement anormal.
J'ai deux modules : application et foo,
voici les routes que j'ai défini :
[lang=php] 'router' => array( 'routes' => array( 'home' => array( 'type' => 'Zend\Mvc\Router\Http\Literal', 'options' => array( 'route' => '/', 'defaults' => array( '__NAMESPACE__' => 'Fo\Controller', 'controller' => 'Fo\Controller\Fo', 'action' => 'index', ), ), ), 'fo' => array( 'type' => 'Literal', 'options' => array( 'route' => '/front-office', 'defaults' => array( '__NAMESPACE__' => 'Fo\Controller', 'controller' => 'Fo\Controller\Fo', 'action' => 'index' ), ), 'may_terminate' => true, 'child_routes' => array( 'default' => array( 'type' => 'Segment', 'options' => array( 'route' => '/[:controller[/[:action]]]', 'defaults' => array( '__NAMESPACE__' => 'Fo\Controller', 'action' => 'index', ), 'constraints' => array( 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), ), ), ), ), // The following is a route to simplify getting started creating // new controllers and actions without needing to create a new // module. Simply drop new controllers in, and you can access them // using the path /application/:controller/:action 'application' => array( 'type' => 'Literal', 'options' => array( 'route' => '/application', 'defaults' => array( '__NAMESPACE__' => 'Application\Controller', 'controller' => 'Index', 'action' => 'index', ), ), 'may_terminate' => true, 'child_routes' => array( 'default' => array( 'type' => 'Segment', 'options' => array( 'route' => '/[:controller[/:action]]', 'constraints' => array( 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), 'defaults' => array( ), ), ), ), ), ), ),
ce que j'observe dans un premier temps c'est que les routes indiquées fonctionnent correctement, c'est à dire que les urls "/" = "/front-office" = "/front-office/fo" = "/front-office/fo/index" retourne bien l'action de mon controlleur Fo du module Fo.
En revanche je ne comprend pas le comportement de cette url suivante : "/front-office/index" qui correspond à l'action index du controlleur index du module application ... Comment est-ce possible que ce soit l'action d'un autre module qui soit rendu, d'autant plus que je n'ai pas de IndexController dans Fo (si je le crée c'est bien ce dernier qui est appelé).
merci pour vos lumiéres
Dernière modification par cybercandyman (04-10-2012 15:11:06)
Hors ligne
Je me rend compte que cela vient du fait que j'utilises des alias dans le controller manager, par exemple :
[lang=php] 'controllers' => array( 'invokables' => array( 'Application\Controller\Index' => 'Application\Controller\IndexController', 'Application\Controller\Auth' => 'Application\Controller\AuthController' ), 'aliases' => array( 'auth' =>'Application\Controller\Auth', 'index' => 'Application\Controller\Index' ) )
donc quand j'appele le controlleur index, le service manager pointe sur 'Application\Controller\Index' ...
le fait est que je suis obligé de mettre des alias sinon mes routes ne sont pas résolues... qu'est ce que je fais de travers ?
Dernière modification par cybercandyman (04-10-2012 15:10:55)
Hors ligne
bonjour,
pour ma part je code directement
[lang=php] 'controllers' => array( 'invokables' => array( 'index' => 'Application\Controller\IndexController', ... ) ) 'router' => array( 'routes' => array( 'authentification' => array( // <- UNIQUE MAIS SANS IMPORTANCE CONNU POUR MOI 'type' => 'Literal', 'options' => array( 'route' => '/auth', // <- URL Réelle 'defaults' => array( 'controller' => 'index', // <- invokables 'action' => 'authentification', ), ), ...
Dernière modification par jfvole (04-10-2012 15:46:55)
Hors ligne
Je viens de tester en retirant les alias et malheureusement j'ai le même résultat.
Les controlleurs et les actions sont bien invoqués quand ils/elles existent ce n'est pas le problème ...
Typiquement sur mon url :
/application/auth/index, je n'ai pas d'action index dans mon controlleur auth, et pourtant je n'ai pas d'erreur à l'éxécution, le contenu qui m'est retourné est celui de /application/index/index ^^
ça me rend dingue *_*
Hors ligne
Bon visiblement, c'est comme cela que çà fonctionne, c'est le comportement normal.
La notion de module est différente du ZF1.
merci pour ton aide
Hors ligne