在路由上定义多个可选参数

时间:2013-03-19 14:08:27

标签: php routing

目前我在我的项目中使用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/blog/2 , /blog/new等URI。

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

1 个答案:

答案 0 :(得分:1)

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