Zend框架2,分页路由问题

rab*_*rab 2 zend-framework2 zend-framework-routing

我在zf2中有关于zend分页和路由的问题.我想在同一页面上显示反馈项的详细信息及其子项(操作)列表.我的路线代码如下

$routes['dashboard_inbox_actions'] =  array(
    'type'      => 'segment',
    'options'   => array(
        'route' => '/dashboard/inbox/detail[/:feedback[/actions/page/:page]]',
        'constraints' => array(  
            'feedback'     => '[0-9]+',
            'page'         => '[0-9]+',
        ),
        'defaults' => array(      
             '__NAMESPACE__' => 'Dashboard\Controller',
            'controller'    => 'inbox' ,
            'action'        => 'detail',                
            'feedback'      => 0 ,
            'page'          => 1
        ),
    ),
);
Run Code Online (Sandbox Code Playgroud)

我通过URL传递

/dashboard/inbox/detail/4
Run Code Online (Sandbox Code Playgroud)

在列表页面中,用于呈现子项目的提供页面.

<?php echo $this->paginationControl($this->paginator, 'Sliding' ); ?>
Run Code Online (Sandbox Code Playgroud)

创建分页网址,反馈ID为0(我的问题)

/dashboard/inbox/detail/0/actions/page/2
/dashboard/inbox/detail/0/actions/page/3
Run Code Online (Sandbox Code Playgroud)

我手动粘贴网址

 /dashboard/inbox/detail/4/actions/page/2
Run Code Online (Sandbox Code Playgroud)

它将第2页显示为活动项.我的控制器代码工作正常并给我结果,但仍然paginationControl创建反馈ID为0的网址.

And*_*rew 7

您需要使用paginationControl视图助手的第四个参数:

<?php 
    echo $this->paginationControl($this->paginator, 'Sliding',
          'my_pagination_control', array('route' => 'paginator_route')); 
?>
Run Code Online (Sandbox Code Playgroud)

您可以将参数传递给视图部分,例如传递路径名称,以便您可以使用正确的路径生成yoru链接.

然后在你的视图部分你可以在url帮助器中使用它:

<?php echo $this->url($this->route, array('page' => $this->first), FALSE, TRUE) ?>
Run Code Online (Sandbox Code Playgroud)

请参阅:http://framework.zend.com/manual/2.0/en/modules/zend.view.helpers.html#url-helper ,您可以在其中看到url helper可以使用当前匹配的params:

url($name, $urlParams, $routeOptions, $reuseMatchedParams)
Run Code Online (Sandbox Code Playgroud)

将$ reuseMatchedParams设置为true将允许使用当前匹配的参数作为默认值.