ZF2 - 段中的路由,非字母数字字符

时间:2016-07-05 10:01:50

标签: routing zend-framework2

根据ZF2手册,我应该可以使用非字母数字字符来分隔路线中的段:

zf2 manual routing

我有以下路线:

'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

虽然我可以使用:/作为分隔符,但显然减号更有意义。问题是什么?

1 个答案:

答案 0 :(得分:0)

来自手册

  

:foo参数之后的{ - }表示一组一个或多个分隔符,之后参数本身的匹配结束。

尝试添加{-}。因为-是通常的符号,所以它不是分隔符。

尝试描述路线参数。

'image' => [
    'options' => [
        'constraints' => [
            'id' => '[0-9]+',
            'width' => '[0-9]+',
            'height' => '[0-9]+',
            'slug' => '[\w\d]+',
            'ext' => '\.png',
        ]
    ]
]