1

我有一个路由器test/view,我想传递一些参数,例如test/view/id/123.

我不确定如何在 zf2 路由器中添加这些参数。

'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(
                    'view' => array(
                        'type' => 'Literal',
                        'options' => array(
                            'route' => '/view',
                            'defaults' => array(
                                'controller' => 'Index',
                                'action'     => 'view',
                            ),
                        ),
                    ),
                ),
            ),
        ),
),

我设置view为子路由,但不确定在哪里添加这些参数。

我试过'route' => '/view/:id/:value'

'defaults' => array(
    'controller' => 'Index',
    'action'     => 'view',
    'id'         => 'value',
)

但它们似乎不起作用

我试图了解这一切是如何运作的。

有任何想法吗?谢谢

4

1 回答 1

5
'router' => array(
    'routes' => array(
        'test-view' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/test/view/:testId[/]',
                'constraints' => array(
                    'testId'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Test\Controller\Index',
                    'action' => 'view'
                ),
            ),
        ),

然后,在您的 ControllerAction 中,您可以使用以下方法获取参数“testId”:

$this->params('testId');

顺便说一句:上面的路线给你一个这样的网址:/test/view/123- 我想你可能会摆脱“id”参数。

如果您想创建指向其中一种页面的链接,您可以$this->url('test-view', array('testId' => 123))在其中一个视图中使用。

于 2012-11-13T00:25:23.557 回答