2012-08-13 13 views
7

La mia applicazione Zend Framework 2 ha una definizione di route che sta tentando di simulare il percorso predefinito di Zend Framework 1. Sembra che:Zend Framework 2 Part Route Assembly

 'router' => array(
      'routes' => array(
       'default' => array(
        'type' => 'segment', 
        'options' => array(
         'route' => '/[:controller[/:action]]', 
         'defaults' => array(
          '__NAMESPACE__' => 'Application\Controller', 
          'controller' => 'Index', 
          'action'  => 'index', 
         ), 
        ), 
        'may_terminate' => true, 
        'child_routes' => array(
         'wildcard' => array(
          'type' => 'wildcard', 
         ), 
        ), 
       ), 
      ), 
     ), 

Si abbina percorsi bene, ma non posso montare percorsi con parametri arbitrari utilizzando l'aiutante Url vista.

Ad esempio,

$this->url('default', array('controller' => 'test', 'action' => 'test', 'id' => 5)); 

risultati in /test/test anziché /test/test/id/5.

Qualcuno sa come assemblare percorsi parziali come questo? O c'è un modo migliore per ottenere percorsi in stile ZF1?

risposta

10

Si scopre che è necessario specificare l'intero nome del percorso (inclusi i percorsi figlio) nell'helper di visualizzazione Url.

Utilizzando il router definito nella mia interrogazione, la corretta chiamata di supporto vista sarà simile:

$this->url('default/wildcard', array('controller' => 'test', 'action' => 'test', 'id' => 5)); 

che si tradurrebbe in un URL di /test/test/id/5.