我有兩個用戶友好的URL問題。Zend Framework - 使用路由和正則表達式設置用戶友好的URL
我已經設置爲路由器如下:
- 實際的URL是
http://www.example.com/course/view-batch/course_id/19
- 我希望有一個更友好的URL
http://www.example.com/java-training/19
我已經安裝在application.ini
以下路線:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
此作品perf很好。
現在我有一個新的一頁 - 其中包含的Java
用戶評論- 實際的URL是
http://www.example.com/course/view-reviews/course_id/19
- 我希望有一個更友好的URL
http://www.example.com/java-reviews/19
我意識到它不會因爲一個可能路由已經設置爲匹配該格式。
所以我想如果它可能使用正則表達式,並檢查標題是否包含「評論」,然後使用此路線。
我試過這種方法,但它不起作用。相反,它會打開視圖批頁:
resources.router.routes.viewreviews.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "\breviews\b"
我有這個工作最接近的是
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "reviews"
現在,如果我輸入網址http://www.example.com/reviews/19
,那麼該視圖的審閱動作被調用。 是否有可能 - 檢查標題是否包含單詞「評論」 - 那麼應該調用此路線?
要回到我前面的工作路線http://www.example.com/java-training/19
:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
數量19
是當然的ID,這是我需要在動作從數據庫中摳細節。
但是當頁面顯示時,我不希望數字19可見。
我只是想要的網址是http://www.example.com/java-training
這可能嗎?
嘿傑里米 - 硬編碼不是一個選項,因爲「java-reviews」是一門課程java - 其他其他課程將有10個其他頁面,如「php-reviews」 - 「python-reviews」等 - 這樣爲什麼我正在尋找一個正則表達式,只是在網址中尋找單詞評論 - 謝謝 – Gublooo
你的選擇仍然是硬編碼 - 但你只是硬編碼結束。 'route = /:title-reviews /:course_id'和'route = /:title-training /:course_id'。 –