我尝试在视图中使用Url帮助程序重用查询参数。这是我目前的网址:
http://localhost/events/index?__orderby=name&__order=asc
我在视图中使用此代码:
$this->url('events/index', array('__page' => '2'), true);
我想获取此网址:
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',
),
),
),
我做错了什么?谢谢你的帮助。
答案 0 :(得分:1)
我认为您正在寻找的是一种查询路由类型,以便将您的查询字符串捕获为子路由:
'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'
)
)
),
),
然后,您可以使用视图助手为您生成和附加查询字符串。如果您不使用Query子路由,那么帮助程序将忽略您的查询字符串。
$this->url(
'page/query',
array(
'name'=>'my-test-page',
'format' => 'rss',
'limit' => 10,
)
);
然后,您可以将第三个参数设置为TRUE,并允许帮助程序使用您在示例中尝试的当前参数。
文档中有一些例子:
http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html
答案 1 :(得分:0)
您可以使用类似这样的内容,但查询参数在我的情况下不会重复使用。
$this->url(
'page/query',
array(),
array(
'query' => array(
'name'=>'my-test-page',
'format' => 'rss',
'limit' => 10,
)
),
true
);
因此,如果您想重用查询参数,可以将它们与新的参数合并,然后将它们全部添加到查询数组中(3参数)。