我的主路由器就像这样(简化):
'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
。
我将如何解决这个问题?
谢谢和问候
答案 0 :(得分:2)
您可以使用段路由而不是正则路由,然后使用
$this->getHelperPluginManager()->getServiceLocator()->get('request')->getUri()->getPath();
在您的视图中打印已使用的实际路线
答案 1 :(得分:0)
虽然@marcosh回答有效,但从那时起我找到了一个更简单的解决方案:
$this->url($this->route, ['language' => $language]);
将输出我想要的内容。对我来说似乎更清楚。