0

Zend フレームワークでは、この$this->url()メソッドを使用していますが、魅力的に機能しています。ただし、問題が 1 つあります。このメソッドは、現在のリクエスト パラメータを新しい URL にコピーしているようです。これはやめてほしい。

例: を使用します$this->url('controller' => 'blog', 'action' => 'list');。現在のページがパラメーターwww.foo.bar/item/view/id/1idある場合、URL は次のようになります。

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

/id/1指定しなくてもパーツが保持されていることがわかります。

どうすればこれをやめさせることができますか?前もって感謝します。

4

2 に答える 2

2

この重複した質問を参照してください。これは古いバージョンのZFにありますが、正しい方向を示しているはずです。

Zend url:getパラメータは常にURLにとどまります

于 2013-03-16T19:32:14.650 に答える
1

保持したくないパラメーターを次のように設定しますnull

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

編集 もう1つの方法があります。実際、すべての 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);
        }

ご覧のとおり、3 番目のパラメーター (boolean $reset) は、現在のルートに保存されているすべてのパラメーターをリセットする必要があります。標準のルーター ( Zend_Controller_Router_Rewrite) を使用していると仮定すると、呼び出しはルート (おそらく Zend_Controller_Router_Route の子孫) に渡され、そのように解釈されます。もちろん、独自のルートを使用する場合は、これを自分で処理する必要があります。

于 2013-03-16T19:29:27.243 に答える