我想知道如何使用zend框架来实现我的站点的URL,比如http://mysite.com/ArticleTitleHere。
在我看来,它是实现一个正则表达式路由,但是这样zf将无法区分文章URL和常规的module/controller/action或controller/action路由。我该如何去实现这样的东西呢?
谢谢
发布于 2012-04-30 00:48:30
您可以在路由中使用占位符:
routes.test.route = "/:article"
routes.test.defaults.module = default
routes.test.defaults.controller = test
routes.test.defaults.action = test
routes.test.defaults.article = ""您可以使用$this->_getParam("article")检索控制器中的article参数。其余部分(通过文章的名称匹配数据库条目)是您的部分。
但是你应该添加像url前缀和/或文章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字符)。
https://stackoverflow.com/questions/10373762
复制相似问题