我有一个路由器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',
)
但它们似乎无法正常工作
我想了解这一切是如何运作的。
任何想法?感谢
答案 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))
。