根据ZF2手册,我应该可以使用非字母数字字符来分隔路线中的段:
我有以下路线:
'may_terminate' => true,
'child_routes' => [
'image' => [
'type' => 'segment',
'options' => [
'route' => '/image/:id-:width-:height-:slug-:ext',
'defaults' => [
'controller' => ImageController::class,
'action' => 'image'
]
],
],
],
在我看来,这样的事情会适用:
/image/1-100-100-my_image.png
我面临的问题是:
当我设置这样的路线时:
'route' => '/image/:id-:width-:height-:slug-:ext',
我收到以下错误:
路由无法匹配请求的网址。没有例外 可用
如果我将路由器更新为:
'route' => '/image/:id/:width/:height/:slug/:ext',
它按预期工作。
我使用PHP7和ZF2版本~2.3
虽然我可以使用:/作为分隔符,但显然减号更有意义。问题是什么?
答案 0 :(得分:0)
来自手册
:foo参数之后的{ - }表示一组一个或多个分隔符,之后参数本身的匹配结束。
尝试添加{-}
。因为-
是通常的符号,所以它不是分隔符。
尝试描述路线参数。
'image' => [
'options' => [
'constraints' => [
'id' => '[0-9]+',
'width' => '[0-9]+',
'height' => '[0-9]+',
'slug' => '[\w\d]+',
'ext' => '\.png',
]
]
]