如果有人向我解释如何在 zend 中生成虚 url,那就太好了。我打算编写一个博客,我希望它的帖子具有http://www.example.com/2012/6/24 格式的链接。博客标题。我对 zend 很陌生。
2 回答
首先,您将创建一个控制器,比如说 dateAction,它接受日期作为输入参数并根据这些日期列出文章。假设您在文章控制器中创建了 dateAction。
所以让这个网址完成工作www.example.com/article/date/year/2012/month/06/day/24/title/abcdef
第一的
但是现在你想把它变成漂亮的东西所以使用 Zend_Router
之后,您将希望在引导程序中创建一条路线
$route = new Zend_Controller_Router_Route_Regex(
'(\d+)/(\d+)/(\d+)/([a-z0-9]+)',
array(
'controller' => 'article',
'action' => 'date'
),
array(
1 => 'year',
2 =>'month',
3 => 'day',
4 =>'title'
)
);
Zend_Controller_Front::getInstance->getRouter()->addRoute('article',$route);
现在 urlhttp://www.example.com/2012/6/24/blog-title
将与
www.example.com/article/date/year/2012/month/06/day/24/title/abcdef
你想要创造的东西通常被称为蛞蝓。我不知道 Zend 框架中内置了任何用于生成 slug 的内容,因此您需要自己生成一个。这是一个非常简单的生成 slug 的方法。
$slug = preg_replace("/[^a-zA-Z0-9 ]/", "", $title);
$slug = str_replace(" ", "-", $slug);
为了使其更健壮,您应该检查您生成的 slug 是否已存在于数据库中。如果是这样,您可以自动在末尾添加一个数字。例如,如果“this-blog-post”已经存在,请尝试“this-blog-post-1”。
除了生成 slug 之外,您还需要遵循 zerkms 的评论并在 Zend 配置中添加一个路由,该路由会将这个 slug 传递给您的控制器。