Zend framework2 ZF2:使用url帮助器并重用查询参数

Zend framework2 ZF2:使用url帮助器并重用查询参数,zend-framework2,query-parameters,Zend Framework2,Query Parameters,我试图在视图中使用Url帮助器重用查询参数。这是我当前的url: http://localhost/events/index?__orderby=name&__order=asc 我在视图中使用以下代码: $this->url('events/index', array('__page' => '2'), true); 我要获取此url: http://localhost/events/index?__orderby=name&__order=asc&__

我试图在视图中使用Url帮助器重用查询参数。这是我当前的url:

http://localhost/events/index?__orderby=name&__order=asc
我在视图中使用以下代码:

$this->url('events/index', array('__page' => '2'), true);
我要获取此url:

http://localhost/events/index?__orderby=name&__order=asc&__page=2
但我得到的却是:

http://localhost/events/index?controller=Application\Controller\Events&__page=2
这是module.config.php文件中的路径:

'events' => array(
    'type' => 'segment',
    'options' => array(
        'route' => '/eventos[/:action]',
        'constraints' => array(
            'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
        ),
        'defaults' => array(
            'controller' => 'Application\Controller\Events',
            'action' => 'index',
        ),
    ),
    'may_terminate' => true,
    'child_routes' => array(
        'index' => array(
            'type' => 'Query',
        ),
    ),
),

我做错了什么?谢谢您的帮助。

我想您需要的是一种查询路由类型,用于将查询字符串作为子路由捕获:

'route' => array(
    'type'    => 'literal',
    'options' => array(
        'route'    => 'page',
        'defaults' => array(
        ),
    ),
    'may_terminate' => true,
    'child_routes'  => array(
        'query' => array(
            'type' => 'Query',
            'options' => array(
                'defaults' => array(
                    'foo' => 'bar'
                )
            )
        ),
    ),
然后可以使用视图帮助器为您生成并附加查询字符串。如果您不使用查询子路由,那么助手将忽略您的查询字符串

$this->url(
    'page/query',
    array(
        'name'=>'my-test-page',
        'format' => 'rss',
        'limit' => 10,
    )
);
然后,您可以将第三个参数设置为TRUE,并允许助手使用当前参数,就像您在示例中尝试的那样

文档中有一些示例:


我认为您需要的是一种查询路由类型,用于将查询字符串捕获为子路由:

'route' => array(
    'type'    => 'literal',
    'options' => array(
        'route'    => 'page',
        'defaults' => array(
        ),
    ),
    'may_terminate' => true,
    'child_routes'  => array(
        'query' => array(
            'type' => 'Query',
            'options' => array(
                'defaults' => array(
                    'foo' => 'bar'
                )
            )
        ),
    ),
然后可以使用视图帮助器为您生成并附加查询字符串。如果您不使用查询子路由,那么助手将忽略您的查询字符串

$this->url(
    'page/query',
    array(
        'name'=>'my-test-page',
        'format' => 'rss',
        'limit' => 10,
    )
);
然后,您可以将第三个参数设置为TRUE,并允许助手使用当前参数,就像您在示例中尝试的那样

文档中有一些示例:


您可以使用类似的方法,但在我的例子中查询参数不可重用

$this->url(
    'page/query',
    array(),
    array(
        'query' => array(
            'name'=>'my-test-page',
            'format' => 'rss',
            'limit' => 10,
        )
    ),
    true
);

因此,如果您想重用查询参数,可以将它们与新参数合并,然后将它们全部添加到查询数组(3个参数)。

您可以使用类似的方法,但在我的示例中,查询参数不可重用

$this->url(
    'page/query',
    array(),
    array(
        'query' => array(
            'name'=>'my-test-page',
            'format' => 'rss',
            'limit' => 10,
        )
    ),
    true
);

因此,如果要重用查询参数,可以将它们与新参数合并,然后将它们全部添加到查询数组(3个参数)。

尝试
$this->url('events',array('action'=>'index','uu page'=>'2'),true)它不工作。它生成下一个Url:
http://localhost/events
啊,我刚刚注意到,这是儿童路线。也许
$this->url('events/index',array(''uuu page'=>2))
可以工作-从未真正使用过查询路由。但是您想要访问的子路由名称是“events/index”,而不仅仅是“events”不,我使用的是
$this->url('eventos/index',array('uuu page'=>'2'))
,但仍然不起作用。它应该是
'events/index'
而不是
'eventos/index'
您通过它们的
名称来分配路由。您指定的名称是
事件
事件/索引
。如果这仍然不起作用,那么查询路由的工作方式就不同了。然后它可能会像
$this->url('events/index')。?\uu page=2
:Stry
$this->url('events',array('action'=>'index','uu page'=>'2'),true)那样工作它不工作。它生成下一个Url:
http://localhost/events
啊,我刚刚注意到,这是儿童路线。也许
$this->url('events/index',array(''uuu page'=>2))
可以工作-从未真正使用过查询路由。但是您想要访问的子路由名称是“events/index”,而不仅仅是“events”不,我使用的是
$this->url('eventos/index',array('uuu page'=>'2'))
,但仍然不起作用。它应该是
'events/index'
而不是
'eventos/index'
您通过它们的
名称来分配路由。您指定的名称是
事件
事件/索引
。如果这仍然不起作用,那么查询路由的工作方式就不同了。然后,它可能会像
$this->url('events/index')。?\u page=2
:注意,查询路由类型在ZF 2.1中已被弃用。请注意,查询路由类型在ZF 2.1中已被弃用