Php 在管线上定义多个可选参数
目前我在我的项目中使用AltoRouter,我需要一个路由,该路由可以匹配具有随机顺序的不同可选参数。我重写了AltoRouter类,使用XML+添加的特性重用参数,如:Php 在管线上定义多个可选参数,php,routing,Php,Routing,目前我在我的项目中使用AltoRouter,我需要一个路由,该路由可以匹配具有随机顺序的不同可选参数。我重写了AltoRouter类,使用XML+添加的特性重用参数,如: <parameter name="page" match="[i:page]"/> <route match="/blog" ...> <use param="page"/> </route> 这将同时匹配/blog和/blog/2 现在我需要一个类似于/blog
<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/new
或/blog/desc/2
,或者只是/blog/2、/blog/new
是否可以为此类URI定义单一路由(即使使用不同的路由器,如Symfony)?如果没有,应该如何设置多个规则来匹配这些URI?找到了一个解决方案:所有可选参数都应该传递给控制器的操作。这样的路由可以用AltoRouter定义,如下所示:
/blog/[**:params]
。此路由将与/blog/和URL的其余部分匹配为$params。例如,URL为/blog/2/desc/new,控制器的操作将以$params的形式获取“2/desc/new”,可以使用explode(“/”,$params)解析并根据需要进行处理