我使用的是自定義的路由器,使像網頁:如何在Zend-Framework中創建自定義路由器?
mytutorialsite.com/category/:categoryname
# added to application.ini
resources.router.routes.categorynameOnCategory.route = /category/:categoryname
resources.router.routes.categorynameOnCategory.defaults.module = default
resources.router.routes.categorynameOnCategory.defaults.controller = category
resources.router.routes.categorynameOnCategory.defaults.action = categoryname
我也有數據庫表「類別」中,所有類別的存儲。例如,假設有以下幾類當前存儲在我的數據庫:
- html
- css
- js
- php
這意味着,以下頁面存在:
- mytutorialsite.com/category/html
- mytutorialsite .com/category/css
- mytutorialsite.com/category/js
- mytutorialsite.com/category/php
但是,當你訪問一個頁面,未在數據庫中列出,像一個類別名稱:
- mytutorialsite.com/category/foo
你應該得到404頁面不存在消息。
我該如何做到這一點?
謝謝,這是非常有益的! – 2010-10-24 14:53:44
前端控制器插件只有一個問題。現在每個$ category->名稱在控制器中都有自己的操作。如果您希望所有類別名稱使用相同的categorynameAction,只需更改'action'=>'categoryname'即可。 – 2010-10-24 18:01:58
這是正確的。如果你想將網址路由到所有相同的動作,它就更簡單了(參見我的回答頂部的假設)。 路由很簡單:「category /:category」,併爲該路由添加一個動作(「categoryName」)。然後在categorynameAction中,參數「category」可以通過$ this - > _ getParam(「category」)獲得。 – 2010-10-24 18:09:00