zf2 - url 查看助手:指定路由参数

zf2 - url view helper: specify parameters for 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。

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

我将如何解决这个问题?

感谢和问候

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

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

在您看来打印实际使用的路线

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

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

会输出我想要的。对我来说似乎更清楚。