如果有人向我解释如何在zend中生成虚荣网址会很棒。我打算编写一个博客,我希望它的帖子有格式http://www.example.com/2012/6/24.blog-title的链接。我对zend很新。
答案 0 :(得分:1)
首先,您将创建一个控制器,例如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);
现在,网址http://www.example.com/2012/6/24/blog-title
的工作方式与此相同
www.example.com/article/date/year/2012/month/06/day/24/title/abcdef
答案 1 :(得分:-1)
您想要创建的内容通常称为slug。我不知道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传递给你的控制器。