在Zend框架中,我使用$this->url()
方法,它的工作就像一个魅力。我有一个问题:该方法似乎将当前请求参数复制到新URL。我希望它停止这样做。
一个例子:我使用$this->url('controller' => 'blog', 'action' => 'list');
。如果当前页面为www.foo.bar/item/view/id/1
且id
为参数,则网址将变为:
www.foo.bar/blog/list/id/1
您可以看到/id/1
部分未经我指定而保留。
如何让它停止这样做?提前谢谢。
答案 0 :(得分:2)
请参考这个重复的问题,它是在旧版本的ZF上,但它应该指向正确的方向:
答案 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的一些后代),并且应该被解释为这样。当然,如果您使用自己的路线,您应该自己处理。