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]);
会输出我想要的。对我来说似乎更清楚。
我的主路由器是这样的(简化版):
'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]);
会输出我想要的。对我来说似乎更清楚。