我使用的是自定义的路由器,使像网页:如何在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