我正在建立一個基本的路由系統,以擺脫index.php?page_id = 2的東西,並使用很好形成的URL,如: 新聞/地區/體育/棒球/初級聯賽/ 2010 其中,例如,我會帶我到2010年的棒球新聞聯賽關於子類別路由的思考
基本結構是這樣的:有一個路由器評估url並訪問一個合適的控制器並調用一些方法(可選)參數。控制器然後調用適當的模型類並將其綁定到一個視圖然後輸出。 (初級聯賽,2010年),我想要訪問: 新聞/方法。
我想保持方法模塊化,所以沒有定義(站點)特定的路線。我只想在我的URL中有一個模式,這樣我就可以用正確的參數調用正確的控制器的方法。
如何格式化我的URL並指定一些評估規則,以便獲得此行爲? (這可能嗎?)
解決方案,我認爲:
- URL示例:新聞/區域/體育/棒球/視圖/初中聯賽/ 2010
- 的斜線爆炸(導致的陣列)
- 外表用於陣列[0]控制器的方法陣列[1]
- 如果該方法存在,則與該參數
- 稱之爲如果不,尋找陣列[1]控制器用數組[2]方法
- 等
優點是這種方法是非常模塊化的。唯一的問題是訪問一個頁面的時間會隨着子類別的數量而變長(或者這可以忽略?)。也許這個過程可以通過存儲一個站點地圖來加快(但那正是我不想要的)
- 格式化一個這樣的網址:[path to controller]/[controller]/[action] - [參數1] - [參數2] 示例:使用該算法的新聞/區域/體育/棒球/視圖junior_league-2010
- 在「 - 」(生成陣列)[新聞/區域/體育/棒球/ 2010]
- 尋找一個名爲array [目錄controllers/news/regional/sports]中控制器數組[0] [last-1](棒球)中的[0] [last](view)。使用數組的其餘部分作爲參數。
缺點是你也使用下劃線,網址不再好看。也許這很費時間?
如果你已經通過了這一切閱讀,謝謝!也許你可以分享你的想法? Gr Bastiaan
由於您在文檔中的努力,我提高了您的問題。由於缺乏經驗,我只能指向一個先前爲我工作的複雜路由組件https://github.com/symfony/Routing。既然你問「想法」 - 這可能不是合適的論壇;) – madflow