2

我在 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。

4

1 回答 1

7

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

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

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

然后在您的视图部分中,您可以在 url 帮助程序中使用它:

<?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 助手可以使用当前匹配的参数:

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

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

于 2013-02-04T13:11:29.597 回答