我在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。
答案 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将允许使用当前匹配的参数作为默认值。