Zend框架2,分页路由问题

时间:2012-10-24 11:49:15

标签: 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
        ),
    ),
);

我传递了网址

/dashboard/inbox/detail/4
列表页面中的

,用于呈现子项目的提供页面。

<?php echo $this->paginationControl($this->paginator, 'Sliding' ); ?>

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

/dashboard/inbox/detail/0/actions/page/2
/dashboard/inbox/detail/0/actions/page/3

我手动粘贴网址

 /dashboard/inbox/detail/4/actions/page/2

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

1 个答案:

答案 0 :(得分:7)

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

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

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

然后在你的视图中,你可以在url helper中使用它:

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

见:http://framework.zend.com/manual/2.0/en/modules/zend.view.helpers.html#url-helper 你可以在哪里看到url helper可以使用当前匹配的params:

url($name, $urlParams, $routeOptions, $reuseMatchedParams)

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