0

目前我在我的项目中使用 AltoRouter,我需要一个可以匹配不同可选参数和random order的路由。我重写了 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] 可以匹配 URI 之类的路由/blog/2/newor /blog/desc/2,或者只是/blog/2 , /blog/new.

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

4

1 回答 1

2

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

于 2013-04-07T16:36:30.593 回答