gpt4 book ai didi

regex - 可选参数 Zend Route Regex

转载 作者:行者123 更新时间:2023-12-02 05:13:44 25 4
gpt4 key购买 nike

如何使用 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 View 助手生成具有默认值而不是当前值的链接。

这是我的路线:

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" 并且我点击"This week",则链接是:"search?s=mv&t=w" 而不是 "search?s=tr&t=w" 因为默认值。

我必须指定默认值,否则会出错。

有什么想法吗?

谢谢,本杰明。

最佳答案

我没有使用正则表达式路由,但我看到了这个错误。基本上,defaults.[param] 部分需要值。我的自定义路线,我将它们设置为空:

; Navigation ID Route (uses navigation id)
resources.router.routes.nav.route = "p/:id/:title/*"
resources.router.routes.nav.defaults.module = "default"
resources.router.routes.nav.defaults.controller = "index"
resources.router.routes.nav.defaults.action = "index"
resources.router.routes.nav.defaults.id =
resources.router.routes.nav.defaults.title =
resources.router.routes.nav.reqs.id = "\d+"
resources.router.routes.nav.reqs.title = ".*"

关于regex - 可选参数 Zend Route Regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com