2013-03-19 57 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)進行解析並按需處理