Php Zend Framework 2从路由获取URL

Php Zend Framework 2从路由获取URL,php,routing,zend-framework2,Php,Routing,Zend Framework2,我要做的是使用 我尝试生成的URL应该是 my website.com/app/####(其中##等于“所有者ID”) 当我像这样使用视图辅助对象生成该视图时会发生什么: $this->url('mymodule', array('action'=>'show', 'ownerID'=>'28')); 是否只生成“my website.com/app”,但我希望根据路由配置生成“my website.com/app/28” 下面是我的module.config.php文件中的

我要做的是使用

我尝试生成的URL应该是 my website.com/app/####(其中##等于“所有者ID”)

当我像这样使用视图辅助对象生成该视图时会发生什么:

$this->url('mymodule', array('action'=>'show', 'ownerID'=>'28'));
是否只生成“my website.com/app”,但我希望根据路由配置生成“my website.com/app/28”

下面是我的module.config.php文件中的路由信息

'router' => array(
'routes' => array(
    'mymodule' => array(
        'type' => 'segment',
        'options' => array(
            'route'    => '/app',
            'defaults' => array(
               'controller' => 'MyModule\Controller\MyModule',
               'action'     => 'show',
            ),
        ),
        // Defines that "/app" can be matched on its own without a child route being matched
        'may_terminate' => true,
        'child_routes' => array(
            'archive' => array(
                'type' => 'segment',
                'options' => array(
                    'route'    => '/:action[/:ownerID[/:clientID]]',
                    'defaults' => array(
                    ),
                    'constraints' => array(
                       'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                       'ownerID'     => '[0-9]+',                               
                       'clientID'     => '[0-9]+',
                    )
                ),
            ),
            'single' => array(
                'type' => 'segment',
                'options' => array(
                    'route'    => '/:ownerID[/:clientID]',
                    'defaults' => array(
                        'action'     => 'show',
                    ),
                    'constraints' => array(
                       'ownerID'     => '[0-9]+',
                       'clientID'     => '[0-9]+',
                    )
                ),
            ),
        )
    ),
)
),
使用$this->redirect()->toRoute时也会发生相同的行为


当您手动键入它们时,所有路由都会按预期工作,这只是URL的生成让我感到困惑。

要更直接地回答这个问题,它不会做您期望的事情,因为您只是将顶级路由名称(“mymodule”)传递给URL帮助器。ownerID是子路由的一部分

你真正想要的是:

$this->url('mymodule/archive', array('action'=>'show', 'ownerID'=>'28'));

(或者可能是
mymodule/single
,具体取决于您想要的输出)。

要更直接地回答这个问题,它不会做您期望的事情,因为您只是将顶级路由名称(“mymodule”)传递给URL帮助器。ownerID是子路由的一部分

你真正想要的是:

$this->url('mymodule/archive', array('action'=>'show', 'ownerID'=>'28'));
(或者可能是
mymodule/single
,具体取决于所需的输出)