2012-04-24 46 views

回答

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); 

联系URL http://www.example.com/2012/6/24/blog-title将工作一样 www.example.com/article/date/year/2012/month/06/day/24/title/abcdef

+1

谢谢你,解决它,我:) – 2012-04-24 04:49:20

+1

不要忘了接受的答案:)哥们 – 2012-04-24 05:10:44

-1

你想要创建的东西通常称为slu。。我没有意识到任何内置于Zend框架中的用于生成slu,的东西,因此您需要自行生成一个。这是一个非常简单的方法来生成一个slu。。

$slug = preg_replace("/[^a-zA-Z0-9 ]/", "", $title); 
$slug = str_replace(" ", "-", $slug); 

为了使这个更健壮,你应该检查看看你生成的slug是否已经存在于数据库中。如果是这样,你可以自动添加一个数字到最后。例如,如果“this-blog-post”已经存在,请尝试“this-blog-post-1”。

除了产生一个slu,外,您还需要遵循zerkms的注释,并在您的Zend配置中添加一条路线,以便将该slu pass传递给您的控制器。