0

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

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

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

您可以看到该/id/1部分在没有我指定的情况下被保留。

我怎样才能让它停止这样做?提前致谢。

4

2 回答 2

2

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

Zend url : 获取参数总是停留在 url

于 2013-03-16T19:32:14.650 回答
1

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

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

编辑 还有另一种方法。事实上,所有 url 助手所做的只是对路由器的直通调用:

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

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

于 2013-03-16T19:29:27.243 回答