Php zend framework 2路由指示更多分隔符
Zend网站建议我可以将包含url分隔符(“/”)的整个字符串映射到Zend路由器中的一个url参数: 所以我创建了这个路线:Php zend framework 2路由指示更多分隔符,php,url,routing,zend-framework2,Php,Url,Routing,Zend Framework2,Zend网站建议我可以将包含url分隔符(“/”)的整个字符串映射到Zend路由器中的一个url参数: 所以我创建了这个路线: 'myRoute' => array ( 'type' => 'segment', 'options' => array ( 'route' => '/someAction/:params{-}', 'defaults' => array (
'myRoute' => array (
'type' => 'segment',
'options' => array (
'route' => '/someAction/:params{-}',
'defaults' => array (
'controller' => 'Application\Controller\myController',
'action' => 'someAction'
)
),
'may_terminate' => true,
),
由于这是/myController的子路由,我现在可以调用:
)
这导致了一个名为“params”的路由参数,我可以自己分析和分解它
这适用于上面指定的URL,但不适用于此URL:
目前我认为我要么受到URL段长度限制的限制,但我没有得到任何类似的错误。Zend只是回答“请求的页面无法解析”
或者我不理解我路线的“/:params{-}”部分
有人能解释或提供解决方案吗
*编辑1:
所以我发现第二个URL中的“-”字符是问题所在,尽管我不明白为什么。如果我将它们从URL中删除,路由工作正常。主要问题似乎是URL中的连字符。 为了解决这个问题,我改变了路段类型的路线。新路线如下所示:
'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,
),
'myRoute'=>数组(
'type'=>'Zend\Mvc\Router\Http\Regex',
“选项”=>数组(
“regex'=>'/someAction/(?[a-zA-Z0-9():/-]*)”,
“默认值”=>数组(
'controller'=>'Application\controller\myController',
“action”=>“someAction”,
),
“spec'=>”/myController/%params%,
),
“may_terminate”=>true,
),
我不知道为什么连字符是个问题。所以,如果有人能详细说明,我将很高兴标记为答案