Zend でルート正規表現パラメータをオプションにする方法は?
検索フィルター用に適切にフォーマットされた URL (「search/index/s/mp/t/w」ではなく「search?s=mp&t=w」) を作成しようとしています。:
人気
- 最も人気のある (s=mp)
- 最も閲覧された (s=mv、デフォルト)
- 最高評価 (s=tr)
- 最もコメントされた (s=mc)
限目
- 全期間 (t=a、デフォルト)
- 今日 (t=d)
- 今週 (t=w)
- 今月 (t=m)
したがって、今日からすべての最高評価のアイテムを取得するには、次のようにします: search?s=tr&t=d
正規表現ルートでは、デフォルト値を指定する必要があります。問題は、URL ビュー ヘルパーが現在の値ではなくデフォルト値でリンクを生成することです。
これが私のルートです:
resources.router.routes.search.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.search.route = "search\?s\=(.+)\&t\=(.+)"
resources.router.routes.search.map.1 = s
resources.router.routes.search.map.2 = t
resources.router.routes.search.defaults.module = front
resources.router.routes.search.defaults.controller = search
resources.router.routes.search.defaults.action = index
resources.router.routes.search.defaults.s = mv
resources.router.routes.search.defaults.t = a
resources.router.routes.search.reverse = "search?s=%s&t=%s"
およびリンク:
<div class="filters note">
<div class="filters-content">
<h3>Popularity</h3>
<ul class="filters-list">
<li>
<a href="<?=$this->url(array('s' => 'mp'), 'search')?>">
Most popular
</a>
</li>
<li>
<a href="<?=$this->url(array('s' => 'mv'), 'search')?>">
Most viewed
</a>
</li>
<li>
<a href="<?=$this->url(array('s' => 'tr'), 'search')?>">
Top rated
</a>
</li>
<li>
<a href="<?=$this->url(array('s' => 'mc'), 'search')?>">
Most commented
</a>
</li>
</ul>
</div>
</div>
<div class="filters period">
<div class="filters-content">
<h3>Period</h3>
<ul class="filters-list">
<li>
<a href="<?=$this->url(array('t' => 'a'), 'search')?>">
All period
</a>
</li>
<li>
<a href="<?=$this->url(array('t' => 'd'), 'search')?>">
Today
</a>
</li>
<li>
<a href="<?=$this->url(array('t' => 'w'), 'search')?>">
This week
</a>
</li>
<li>
<a href="<?=$this->url(array('t' => 'm'), 'search')?>">
This month
</a>
</li>
</ul>
</div>
</div>
たとえば、現在のページが「search?s=tr&t=d」で「今週」をクリックすると、リンクは「search?s=tr&t= w」ではなく「search?s=mv&t=w」になります。デフォルト値の。
デフォルト値を指定しないとエラーが発生します。
何か案が ?
ありがとう、ベンジャミン。