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

时间:2015-06-09 06:38:05

标签: pagination routes zend-framework2 query-string

我是PHP和ZF2的新手。 我有一个paginator,我需要保持排序,搜索和过滤查询字符串,如下所示:

[Compiling]: /tmp/php-build/source/5.5.21

我读到了路由,但我不明白如何在我的情况下使用。 在module.config.php中我有:

http://localhost:90/admin/analyses/list?page=1&filter_analyses_categories=1&orderBy=analyses_name&orderDirection=DESC

paginator部分视图如下所示:

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
),
);

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

http://localhost:90/admin/analyses/list?page=3

没有其他查询字符串parmae​​ters。 如何为每个页面实现正确的URL以保持其他查询字符串参数?

1 个答案:

答案 0 :(得分:0)

不要将您的页面参数作为查询字符串传递。改为使用您定义的路由参数:

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

第三个参数保留已匹配的路线参数