Pagination 带有查询字符串的ZF2分页器

Pagination 带有查询字符串的ZF2分页器,pagination,routes,zend-framework2,query-string,Pagination,Routes,Zend Framework2,Query String,我是PHP和ZF2的新手。 我有一个paginator,我需要将排序、搜索和筛选从查询字符串中保留下来,如下所示: http://localhost:90/admin/analyses/list?page=1&filter_analyses_categories=1&orderBy=analyses_name&orderDirection=DESC 我读过关于路由的书,但我不知道如何在我的情况下使用。 在module.config.php中,我有: return arr

我是PHP和ZF2的新手。 我有一个paginator,我需要将排序、搜索和筛选从查询字符串中保留下来,如下所示:

http://localhost:90/admin/analyses/list?page=1&filter_analyses_categories=1&orderBy=analyses_name&orderDirection=DESC
我读过关于路由的书,但我不知道如何在我的情况下使用。 在module.config.php中,我有:

return array(
'router' => array(
    'routes' => array(
        'home' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/',
                'defaults' => array(
                    'controller' => 'Admin\Controller',
                    'action'     => 'index',
                ),
            ),
        ), //end home
        'admin' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/admin',
                'defaults' => array(
                    '__NAMESPACE__' => 'Admin\Controller',
                    'controller'    => 'Index',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'default' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/[:controller[/:action][/page/:page]]',
                        'constraints' => array(
                            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                        ),
                    ),
                ),
            ),
        ), //end admin
      'paginator' => array(
        'type' => 'segment',
        'options' => array(
            'route' => '',
            'defaults' => array(
                'page' => 1,
            ),
         'may_terminate' => true,
         'child_routes'  => array(
                'query' => array(
                        'type' => 'Query',
                ),
            ),
        ),
      ),//end paginator
    ),//end routes
),
);
分页器局部视图如下所示:

<?php foreach ($this->pagesInRange as $page): ?>
             <?php if ($page != $this->current): ?>
                 <li>
                     <a href="<?php echo $this->url($this->route);?>?page=<?php echo $page; ?>">
                         <?php echo $page; ?>
                     </a>
                 </li>
             <?php else: ?>
                 <li class="active">
                     <a href="#"><?php echo $page; ?></a>
                 </li>
             <?php endif; ?>
         <?php endforeach; ?>

  • 为每个页面创建的链接如下所示:

    没有其他查询字符串参数。
    如何在保留其他查询字符串参数的情况下为每个页面获得正确的url?

    不要将页面参数作为查询字符串传递。请改用定义的管线参数:

    $this->url('admin/default', ['page' => $page], true);
    

    第三个参数保持您已经匹配的路径参数

    在paginator route上,我发布了一些我尝试过的内容,但不正确。分页器路由为:'paginator'=>array('type'=>'segment','options'=>array('route'=>'','defaults'=>array('page'=>1,),),查询字符串中的筛选器参数可以是以fitler_开头的任何变量。我需要的是一种方法,用paginator中的页面替换当前url中的页码。对不起,我没有提到您正在使用paginator路由。请改用您的管理/默认路由。查询路由类型已弃用。我无法理解您的意思预期与paginator路由有关。代码是由其他人编写的,我需要修复它。就像我说的,我是新手。我想要的是从查询字符串中为paginator的每个页面不断筛选、搜索和排序。