2011-07-12 45 views
1

我正在建立一個基本的路由系統,以擺脫index.php?page_id = 2的東西,並使用很好形成的URL,如: 新聞/地區/體育/棒球/初級聯賽/ 2010 其中,例如,我會帶我到2010年的棒球新聞聯賽關於子類別路由的思考

基本結構是這樣的:有一個路由器評估url並訪問一個合適的控制器並調用一些方法(可選)參數。控制器然後調用適當的模型類並將其綁定到一個視圖然後輸出。 (初級聯賽,2010年),我想要訪問: 新聞/方法。

我想保持方法模塊化,所以沒有定義(站點)特定的路線。我只想在我的URL中有一個模式,這樣我就可以用正確的參數調用正確的控制器的方法。

如何格式化我的URL並指定一些評估規則,以便獲得此行爲? (這可能嗎?)

解決方案,我認爲:

  • URL示例:新聞/區域/體育/棒球/視圖/初中聯賽/ 2010
    1. 的斜線爆炸(導致的陣列)
    2. 外表用於陣列[0]控制器的方法陣列[1]
    3. 如果該方法存在,則與該參數
    4. 稱之爲如果不,尋找陣列[1]控制器用數組[2]方法

    5. 優點是這種方法是非常模塊化的。唯一的問題是訪問一個頁面的時間會隨着子類別的數量而變長(或者這可以忽略?)。也許這個過程可以通過存儲一個站點地圖來加快(但那正是我不想要的)
  • 格式化一個這樣的網址:[path to controller]/[controller]/[action] - [參數1] - [參數2] 示例:使用該算法的新聞/區域/體育/棒球/視圖junior_league-2010
    1. 在「 - 」(生成陣列)[新聞/區域/體育/棒球/ 2010]
    2. 尋找一個名爲array [目錄controllers/news/regional/sports]中控制器數組[0] [last-1](棒球)中的[0] [last](view)。使用數組的其餘部分作爲參數。
      缺點是你也使用下劃線,網址不再好看。也許這很費時間?

如果你已經通過了這一切閱讀,謝謝!也許你可以分享你的想法? Gr Bastiaan

+0

由於您在文檔中的努力,我提高了您的問題。由於缺乏經驗,我只能指向一個先前爲我工作的複雜路由組件https://github.com/symfony/Routing。既然你問「想法」 - 這可能不是合適的論壇;) – madflow

回答

1

最近我一直在使用ToroPHP,它使用PHP數組來定義匹配的正則表達式模式,如果匹配時使用處理程序來調用。

看看ToroPHP,也許可以根據您的需求推斷部分解決方案。

+0

謝謝!我會考慮的! – Bastiaan