【问题标题】:Defining multiple optional parameters on a route在路由上定义多个可选参数
【发布时间】:2013-03-19 14:08:27
【问题描述】:

目前我在我的项目中使用AltoRouter,我需要一个可以匹配不同可选参数的路由随机顺序。我重写了 AltoRouter 类以使用 XML + 添加的功能来重用参数,例如:

<parameter name="page" match="[i:page]"/>

<route match="/blog" ...>
    <use param="page"/>
</route>

这将匹配/blog/blog/2

现在我需要像/blog/[i:page]/[desc|asc:order]/[new|popular:sort] 这样的路线 可以匹配诸如/blog/2/new/blog/desc/2 之类的URI,或者只是/blog/2 , /blog/new

是否可以为此类 URI 定义单个路由(即使使用不同的路由器,如 Symfony)?如果不是,应该如何设置多个规则来匹配这样的 URI?

【问题讨论】:

    标签: php routing


    【解决方案1】:

    找到了解决方案:所有可选参数都应该传递给Controller的action。这样的路由可以像这样使用 AltoRouter 定义:/blog/[**:params]。该路由将匹配 /blog/ 和 URL 的其余部分作为 $params。例如。 URL是/blog/2/desc/new,Controller的action会得到'2/desc/new'作为$params,可以用explode('/', $params)解析并根据需要处理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 2021-04-07
      • 2020-04-20
      • 2017-06-03
      相关资源
      最近更新 更多