zf2 - url view helper:指定路由的参数

时间:2015-12-24 13:41:19

标签: php zend-framework2 zend-route

我的主路由器就像这样(简化):

'router' => [
    'routes' => [
        'blog' => [
            'type'         => 'regex',
            'options'      => [
                'regex'         => "/(?<language>[a-z]{2})?",
                'spec'          => "/%language%",
                'defaults'      => [
                    'controller' => 'Blog\Controller\Posts',
                    'action'     => 'index'
                ],
            ],
            'may_terminate' => true,
            'child_routes' => [
           // [...] 
                        'add_post'    => [
                            'type'    => 'literal',
                            'options' => [
                                'route'    => '/admin/post/add',
                                'defaults' => [
                                    'controller' => 'Blog\Controller\Posts',
                                    'action'     => 'add'
                                ]
                            ]
                        ], // end add post
            ] // end child routes
        ] // end blog route (main route)
    ] // end routes
] // end Router

在“/ en / admin / post / add”上显示的模板中,我打电话给$this->url(),最终打印/%language%/admin/post/add

我的模板上的$language上提供了语言代码,并且 我想将其传递给url(),以便使用规范正确构建网址。

另外,如果可能的话,我希望在调用url()时不指定路线名称,因此它会使用默认值$this

我将如何解决这个问题?

谢谢和问候

2 个答案:

答案 0 :(得分:2)

您可以使用段路由而不是正则路由,然后使用

$this->getHelperPluginManager()->getServiceLocator()->get('request')->getUri()->getPath();

在您的视图中打印已使用的实际路线

答案 1 :(得分:0)

虽然@marcosh回答有效,但从那时起我找到了一个更简单的解决方案:

$this->url($this->route, ['language' => $language]);

将输出我想要的内容。对我来说似乎更清楚。