2012-08-13 101 views
7

我的Zend Framework 2应用程序有一个路由定义,它试图模仿默认的Zend Framework 1路由。它看起来像: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', 
         ), 
        ), 
       ), 
      ), 
     ), 

它匹配的路线就好了,但我不能组装与使用Url视图助手任意参数路线。

例如,

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

导致/test/test代替/test/test/id/5

有谁知道如何组装这样的部分路线?还是有更好的方式获得ZF1风格的路线?

回答

10

事实证明,您需要在Url视图助手中指定整个路由名称(包括子路由)。

使用我的问题定义的路由器,适当的视图助手通话将如下所示:

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

这将导致/test/test/id/5的URL。