Zend网站建议我可以将整个字符串中的url分隔符(“/”)映射到zend路由器中的一个url参数: Zend Framework 2 - Router
所以我创建了这条路线:
'myRoute' => array (
'type' => 'segment',
'options' => array (
'route' => '/someAction/:params{-}',
'defaults' => array (
'controller' => 'Application\Controller\myController',
'action' => 'someAction'
)
),
'may_terminate' => true,
),
由于这是/ myController的子路由,我现在可以调用: http://myHost/myController/someAction/someParam1(someValue)/bookingCode(X79P00A3CB0002:000000010000000D000C80F601D))
这导致一个名为“params”的路由参数,然后我可以自己分析和爆炸。
目前我认为我受限于URL段长度限制,但我没有得到任何类似的错误。 Zend刚回答“请求的页面无法解析”。
或者我不理解我路线的“/:params { - }”部分。
有人可以解释或提供解决方案吗?
*编辑1: 所以我发现第二个URL中的“ - ”字符是问题,但我不明白为什么。如果我从URL中删除它们,路由工作正常。
答案 0 :(得分:0)
主要问题似乎是网址中的连字符。 我从段类型更改了路由以解决此问题。新路线如下:
'myRoute' => array (
'type' => 'Zend\Mvc\Router\Http\Regex',
'options' => array(
'regex' => '/someAction/(?<params>[a-zA-Z0-9():/_-]*)',
'defaults' => array(
'controller' => 'Application\Controller\myController',
'action' => 'someAction',
),
'spec' => '/myController/%params%',
),
'may_terminate' => true,
),
我不知道为什么连字符是个问题。所以,如果有人能够详细说明,我很乐意将其标记为答案!