使用Zend Framework进行StackOverflow样式路由

时间:2011-07-02 19:20:45

标签: php zend-framework routing url-rewriting

我正在使用Zend Framework构建一个像StackOverflow这样的Q& A网站。除了花哨的网址之外,它都设置好了。 网址应该是这样的:

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

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

但我也需要网站主页,如:

www.site.com/programming

我想我必须使用路由链接但是一些帮助会很好。

1 个答案:

答案 0 :(得分:3)

您可以使用自定义路线轻松实现此目的。由于您未指定有关如何构建代码的任何内容,因此我将做出以下假设:

  • 您的网站上有基于参数
  • 的摄影和编程“部分”
  • 您有一个控制器可以处理所有部分的问题,但会根据参数
  • 选择所有部分

首先,对于主页案例:

路由:section,并指定处理您的部分主页的模块,控制器和操作的默认值。

其次,对于问题案例:

路由:section/questions/:id/:title,并再次指定处理特定问题的模块,控制器和操作的默认值。您还可以将标题的默认值定义为空,因为问题已经可以根据ID找到。

然后,在您的控制器中,您可以使用$this->_getParam('section')之类的内容来确定应该使用的部分,依此类推。

如果您不知道如何创建这些路线,建议您仔细阅读manual for Zend_Controller_Routermanual for Zend_Application resources,了解如何在您的应用中定义路线。