Как сделать опции параметров регулярного выражения маршрута с Zend?
Я пытаюсь создать хорошо отформатированные URL («search? S = mp & t = w» вместо «search / index / 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 = mv & t = w " вместо " search? s = tr & t = w " из-за значений по умолчанию.
Я должен указать значения по умолчанию или получаю ошибку.
Есть идеи?
Спасибо,
Бенджамин.