如何在Zend Framework 2中使用路由传递params?

时间:2012-11-13 00:14:50

标签: php zend-framework2 routes params

我有一个路由器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',
)

但它们似乎无法正常工作

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

任何想法?感谢

1 个答案:

答案 0 :(得分: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))