2011-07-02 134 views
1

我正在構建一個Q &像Zend框架一樣的StackOverflow網站。除了花哨的網址之外,這一切都已經完成。 網址應是這樣的:Zend框架的StackOverflow風格路由

wwww.site.com/programming/questions/321345/question-title-sanitized-with-dashes 

www.site.com/photography/questions/45621/photography-site-question 

也是我需要的網站主頁,如:

www.site.com/programming 

我想我必須使用路由鏈接,但一些幫助將是不錯。

+0

什麼是您目前的路線? – Femaref

+0

我沒有更改默認的/:module /:controller /:action style routing。因爲我無法弄清楚從哪裏開始。 – cnkt

回答

3

通過使用自定義路線,您可以非常容易地達到此目的。既然你沒有指定有關你如何組織你的代碼什麼,我會做如下假設:

  • 網站有哪些是基於參數發現「部分」喜歡攝影和編程
  • 你有一個單一的控制器,處理所有的部分問題,但選擇基於參數

首先一切,對於網頁的情況:

路線:section,並指定模塊默認,控制器和處理您的部分主頁的操作。

其次,對於這個問題的情況:

路線:section/questions/:id/:title,並再次指定模塊,控制器和行動負責處理具體問題的默認值。您還可以將標題的默認值定義爲空,因爲該問題可以基於ID來找到。

然後,在您的控制器中,您可以簡單地使用諸如$this->_getParam('section')之類的內容來確定應該使用的部分,依此類推。

如果你不知道如何創建這些路線,我建議你仔細閱讀有關如何在定義路由manual for Zend_Controller_Routermanual for Zend_Application resources你的application.ini

+0

我接受了你的答案,因爲你的想法是真實的。但是,當一件事發生變化時,我不想重新介紹每條路線。讓我明確這一點。我已經創建了這樣的網站路線:「section」,沒關係。路線匹配。在你的想法中,對於問題,路線應該是「:section/questions /:id /:title」,這也沒關係。但我們正在重新介紹「部分路線」。我的問題是:我們可以鏈接所有這些路線嗎?因爲如果我想添加一個「答案」頁面,我必須「:section/questions /:id /:title/answers」。但創建「/答案」路線並將其鏈接到「問題」路線聽起來更有效。 – cnkt

+0

是的,你可以鏈接路線,但取決於一些事情,它可能會或可能不會按你的意願工作。請參閱[鏈接路線文檔](http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.chain) –