6

カテゴリにリンクを追加するための単純な CRUD を作成しています。各カテゴリには ID があります。特定のカテゴリのすべてのリンクを一覧表示するビューがあります。そのビューには、追加フォームへのリンクがあります。

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

現在、次の構文を使用してビューにそのリンクを作成しています。

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

Url View Helper を使用すると、これをよりクリーンに実行できると思います。

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

しかし、それは私に次のURLを与えます

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

..追加の「id/3」があります。Url View Helper のコードを読みましたが、完全には理解できませんでした。そこに余分な id/3 があるのはなぜですか?

ありがとう!

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

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

1 に答える 1

9

デフォルトでは、Url ViewHelper は、指定されたパラメーターを現在の要求パラメーターとマージしてオーバーライドします。あなたの場合のように id-parameter 。すべてのパラメータをリセットしたい場合は、view-helper の 3 番目のパラメータ「reset」を使用する必要があります。

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

これにより、viewhelper は現在のリクエストを設定されていないパラメータの「フォールバック」として使用しないように強制されます。デフォルトの動作は、現在のリクエストの 1 つまたは 2 つのパラメーター (アクションなど) のみを変更したいが、すべてのパラメーターを設定したくない場合 (または、すべてのパラメーターを知らない場合) に特に役立ちます。

于 2010-11-18T14:02:19.820 に答える