1

我想知道我将如何去实现我的网站的 URL,比如http://mysite.com/ArticleTitleHere使用 zend 框架。

我看到它的方式是实现一个正则表达式路由,但是这样 zf 将无法从常规module/controller/actioncontroller/action路由中分辨出文章 URL。我将如何实施这样的事情?

谢谢

4

1 回答 1

3

您可以在路线中使用占位符:

routes.test.route = "/:article"
routes.test.defaults.module = default
routes.test.defaults.controller = test
routes.test.defaults.action = test
routes.test.defaults.article = ""

您可以使用 检索article控制器中的参数$this->_getParam("article")。其余的(通过文章名称匹配数据库条目)是您的部分。

但是您应该添加诸如 url-prefix 和/或文章 id 之类的内容,否则可能找不到其他路由。所以使用这样的东西要好得多:

routes.test.route = "/article/:id/:title"

routes.test.defaults.module = default
routes.test.defaults.controller = test
routes.test.defaults.action = test
routes.test.defaults.article = ""
routes.test.defaults.id = ""

您可以通过这种方式使用 url-Viewhelper 来创建链接:

<a href="<?php echo $this->url(array("id" => $article->id, "title" => $article->title), "test"); ?>"><?php echo $this->escape($article->title); ?></a>

并在您的控制器中进行重定向:

$this->_helper->redirector->gotoRoute(array("id" => $article->id, "title" => $article->title), "test");

请记住转义或过滤$article->title无效字符(或非 ascii 字符)。

于 2012-04-29T16:48:30.117 回答