2013-03-19 59 views
0

目前我在我的项目中使用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

找到了一个解决方案:所有的可选参数都应该传递给控制器​​的动作。 AltoRouter可以像这样定义这种路由:/blog/[**:params]。此路线将匹配/博客/和URL的其余部分为$ params。例如。 URL是/ blog/2/desc/new,Controller的动作会得到'2/desc/new'作为$ params,那些可以用explode('/',$ params)进行解析并按需处理