Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Tout d'abord, je sais qu'il vaut mieux utiliser les routes literal que les segment...
Je voulais juste mettre des liens dans les vues du zf2-tutorial et je n'arrivais pas à appeler une child route depuis $this->url('test', array('controller' =>'index', 'action' => 'monaction'));
Ma route :
'router' => array( 'routes' => array( 'test' => array( 'type' => 'Literal', 'options' => array( 'route' => '/test', 'defaults' => array( '__NAMESPACE__' => 'Test\Controller', 'controller' => 'Index', 'action' => 'index', ), ), 'may_terminate' => true, 'child_routes' => array( ici=> '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( ), ), ), ), ), ), ),
Je voulais juste créer une URL (dans le zf2_tutorial) et utiliser le ViewHelper pour faire le lien avec une action de l'index controller.
/test/index/mon-action
Il est important d'ajouter le nom de la child route à la route, séparée par un /. C'est logique si les child route sont de type litéral, mais dans le cas d'une child route de type segment, il n'existe pas de nom de child route... alors il faut indiquer 'default' :
echo $this->url( 'test/default', array('action' => 'mon-action', 'controller' => 'index'));
Si on ne le fait pas, le view helper ne tient pas compte de la child route et reste obstinément sur la route /test.
Bref, pas évident à détecter....
Hors ligne
alors enfait tu doit mettre default car ta child-route s'appel default
[lang=php] 'child_routes' => array( 'default' => array( 'type' => 'Segment',
si tu l'appel autrement, par exemple toto, tu pourra bien appeler test/toto
Hors ligne
Pages: 1