2011-04-01 88 views
0

我正在努力處理我的URL映射。現在,我正在使用Zend Framework來構建一個照片庫系統。畫廊系統可以處理類別和畫廊。一個類別可以包含子類別或畫廊。顯然,一個畫廊有一個形象。這意味着我可以有下列網址可能性...Zend路由器邏輯

domain.com/gallery/ < ==主要畫廊頁

domain.com/gallery/category1/gallery1/圖像

的< ==顯示畫廊畫廊

domain.com/gallery/category1/category2/ < ==顯示畫廊

domain.com/gallery/category1/category2/gallery1 < ==顯示圖像的圖庫

domain.com/gallery/category3/gallery2/image1 < ==顯示單個圖像頁面

domain.com/gallery/gallery3/ < ==殘疾類別,因此其顯示圖像

哪有的畫廊我處理多個選項?如果有一個簡單的任務總是要/ {category}/{gallery}/{image} /那麼我可以把它放在一起。但我在如何管理變量數量發生變化的問題上掙扎。

如果我與每個畫廊/分類/圖像具有獨特的名字,意思是一個畫廊和類別不共享同一名稱的假設運行,那麼我可以簡單地忽略所有的變量除了最後一個。我可以設置一個腳本,它接受最後一個變量,將它與圖像表,圖表表格和類別表進行比較,然後在第一個變量獲得匹配時將其轉發到正確的視圖。雖然這聽起來相當資源密集,可能有3個模型查詢每次調用圖庫系統時,我無法想出任何其他方式去解決這個問題。

任何人有任何想法或建議,以最有效地做到這一點?

回答

1

URL沒有需要知道類別的層次結構,IMO。如果您同意並給予該庫是一個控制器,你可以解決這個問題是這樣的:

domain.com/gallery/display/gallery/23
domain.com/gallery/display/category/42
域.com/gallery/display/image/5

這將意味着你只是有一個顯示操作,並將其餘的參數作爲params傳遞。如果你通過帕拉姆畫廊,就展現出與各自的ID畫廊,如果你通過帕拉姆類別,你檢查,如果這個類有子類,並告訴他們或相應畫廊。

你也能想到,你有一個畫廊模塊,顯示控制器和畫廊,類,圖像操作的解決方案。在這種情況下,你需要在URL中添加/ ID /部分:

domain.com/gallery/display/gallery/id/23

讓你的模特身材出層次和用麪包屑或類似物反映它。

+0

這很容易。我試圖把層次結構放在可讀性和SEO的URL中,而不是實際的腳本理由......你的權利,按照你的建議很容易,事實上我正在開發中,但是希望能夠做一些事情更多。我想我可以爲用戶導航做麪包屑。 – 2011-04-01 22:05:37

+0

你會贏?我認爲可讀性更好,簡單的方法和搜索引擎優化也不會改善!?! KISS原則似乎適用於此! – markus 2011-04-02 11:47:40

+0

聽起來不錯。謝謝! – 2011-04-03 01:09:39