2017-10-20 22 views
1

Ce que je suis en train de faire est de générer une URL en utilisant le url view helper in Zend Framework 2Zend Framework 2 obtenir l'URL de la route

L'URL que je suis en train de générer devrait être my-website.com/app/## (où ## est égale à la « OWNERID »)

ce qui arrive quand je produis cela en utilisant l'aide de vue comme celui-ci:

$this->url('mymodule', array('action'=>'show', 'ownerID'=>'28')); 

est-il ne génère que « my-website.com/app », mais Je m'attends à "my-website.com/app/28" basé sur la configuration de routage.

Voici les informations d'itinéraire de mon fichier module.config.php

'router' => array(
'routes' => array(
    'mymodule' => array(
     'type' => 'segment', 
     'options' => array(
      'route' => '/app', 
      'defaults' => array(
       'controller' => 'MyModule\Controller\MyModule', 
       'action'  => 'show', 
      ), 
     ), 
     // Defines that "/app" can be matched on its own without a child route being matched 
     'may_terminate' => true, 
     'child_routes' => array(
      'archive' => array(
       'type' => 'segment', 
       'options' => array(
        'route' => '/:action[/:ownerID[/:clientID]]', 
        'defaults' => array(
        ), 
        'constraints' => array(
         'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
         'ownerID'  => '[0-9]+',        
         'clientID'  => '[0-9]+', 
        ) 
       ), 
      ), 
      'single' => array(
       'type' => 'segment', 
       'options' => array(
        'route' => '/:ownerID[/:clientID]', 
        'defaults' => array(
         'action'  => 'show', 
        ), 
        'constraints' => array(
         'ownerID'  => '[0-9]+', 
         'clientID'  => '[0-9]+', 
        ) 
       ), 
      ), 
     ) 
    ), 
) 
), 

Le même problème se produit lorsque vous utilisez $ this-> redirect() -> toRoute.

Toutes les routes fonctionnent comme prévu lorsque vous les tapez manuellement, c'est juste la génération de l'URL qui m'a dérouté.

Répondre

0

Pour répondre plus directement à la question, il ne répond pas à vos attentes car vous transmettez uniquement le nom d'itinéraire de niveau supérieur ("mymodule") à l'assistant d'URL. Le ownerID fait partie d'une route enfant.

Qu'est-ce que vous voulez réellement est:

$this->url('mymodule/archive', array('action'=>'show', 'ownerID'=>'28')); 

(ou peut-être mymodule/single, en fonction de la sortie que vous voulez).