从url()中删除URL中的参数?

时间:2013-03-16 19:26:05

标签: php zend-framework url

在Zend框架中,我使用$this->url()方法,它的工作就像一个魅力。我有一个问题:该方法似乎将当前请求参数复制到新URL。我希望它停止这样做。

一个例子:我使用$this->url('controller' => 'blog', 'action' => 'list');。如果当前页面为www.foo.bar/item/view/id/1id为参数,则网址将变为:

www.foo.bar/blog/list/id/1

您可以看到/id/1部分未经我指定而保留。

如何让它停止这样做?提前谢谢。

2 个答案:

答案 0 :(得分:2)

请参考这个重复的问题,它是在旧版本的ZF上,但它应该指向正确的方向:

Zend url : get parameter always stay in the url

答案 1 :(得分:1)

将您不想保留的任何参数设置为null

$this->url('controller' => 'blog', 'action' => 'list', 'id'=>null);

修改 还有一种方法。实际上,所有url helper都是对路由器的传递调用:

 public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
        {
            $router = Zend_Controller_Front::getInstance()->getRouter();
            return $router->assemble($urlOptions, $name, $reset, $encode);
        }

如您所见,第三个参数(boolean $ reset)应该重置当前路由中存储的所有参数。假设您正在使用标准路由器(Zend_Controller_Router_Rewrite),则呼叫将被传递到路由(可能是Zend_Controller_Router_Route的一些后代),并且应该被解释为这样。当然,如果您使用自己的路线,您应该自己处理。