2010-11-18 9 views
6

カテゴリへのリンクを追加するための簡単なCRUDを作成しています。各カテゴリにはIDがあります。私は特定のカテゴリのすべてのリンクを一覧表示するビューを持っています。このビューでは、私は以下の構文を使用してビューにそのリンクを構築しています:Zend FrameworkのURL表示ヘルパーはデフォルトで「id」を追加します

http://example.com/link/add/categoryId/3 

私は現在、

<?php echo $this->baseUrl();?>/link/add/categoryId/<?php echo $this->category['id']; ?> 

私が思うこれは、URLビューヘルパーを使用して、クリーナー行うことができます。

<?php echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id'])); ?> 

しかし、それは私に次のURL余分な "ID/3" を持っている..which

http://example.com/link/add/id/3/categoryId/3 

を与えます。 URL閲覧ヘルパーのコードを読みましたが、完全に理解できませんでした。どのようにそこに余分なid/3がありますか?

ありがとうございます!

@Fgeが正しい答えを出しました。以下は私の更新された完全な構文です。デフォルトでは

echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id']),null,true); 
+0

現在のリクエストに「id」というパラメータがありますか? – Fge

+1

はい、特定のカテゴリのすべてのリンクを一覧表示するビューがあります。その「特定のカテゴリ」にIDがある場合、URLはhttp://example.com/category/view/id/3 –

答えて

9

のUrlなViewHelperは、現在のリクエストパラメータで指定されたパラメータをマージして上書きします。あなたの場合と同じように、idパラメータ。 「リセット」:あなたはなViewHelperの3番目のパラメータを使用する必要があり、すべてのパラメータをリセットしたい場合は

$this->url(array(), 'route'(= null to use the default), true); 

をこれが設定されていないパラメータについては、「フォールバック」として、現在の要求を使用しないようなViewHelperを強制します。デフォルトの動作は、現在のリクエストの1つまたは2つのパラメータ(アクションなど)を変更したいだけで、すべてのパラメータを設定したくない場合(またはそれらをすべて知っていない可能性もあります)に特に便利です。

+0

ありがとう!質問を編集して、私が望むURLを取得するために使用した完全な構文を追加します。 これがデフォルトのために奇妙な動作ではないと思いませんか? –

+0

動作は完全ではありません。これにより、多くの用途で構文が短くなります。ページ区切り付きのサーバー側ソート可能リストがあるとします。ページングとソート可能なヘッダーについては、$ this-> url( 'order' => 'ASC')を使用するだけです。順序を変更する。ページ、フィルタなどの他のパラメータはそのまま残ります。あなたの視点でそれらを気にする必要はありません:) – Fge

+0

それは本当にそれの完璧なユースケースです! –

関連する問題