7

我的 Zend Framework 2 应用程序有一个路由定义,它试图模仿 Zend Framework 1 的默认路由。看起来像:

        '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 风格的路线?

4

1 回答 1

10

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

使用我的问题中定义的路由器,正确的视图助手调用如下所示:

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

这将导致/test/test/id/5.

于 2012-08-13T14:11:42.013 回答