Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php zend framework 2路由指示更多分隔符_Php_Url_Routing_Zend Framework2 - Fatal编程技术网

Php zend framework 2路由指示更多分隔符

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 (

Zend网站建议我可以将包含url分隔符(“/”)的整个字符串映射到Zend路由器中的一个url参数:

所以我创建了这个路线:

'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,
),
我不知道为什么连字符是个问题。所以,如果有人能详细说明,我将很高兴标记为答案