Symfony2 - 设置博客存档

时间:2014-03-30 00:03:40

标签: date symfony datetime blogs archive

我一直在尝试为博客网站设置博客存档,用户点击日期并显示相应的帖子。 (见图)我知道我需要检索所有博客文章并按日期排序,但之后的步骤对我来说是模糊的。获取该数据然后按月/年对其进行排序并将其传递给模板是我遇到问题的部分。

有人能否解释我的错误或提供一个简单的工作示例?

enter image description here

到目前为止我所拥有的:

    public function archiveAction()
    {
        $em = $this->getDoctrine()->getManager();

//        $query = $em->getRepository('AcmeProjectBundle:Blog')
//            ->findAll();

        $blogs = $em->getRepository('AcmeProjectBundle:Blog')
            ->getLatestBlogs();

        if (!$blogs) {
            throw $this->createNotFoundException('Unable to find blog posts');
        }

        foreach ($blogs as $post) {
            $year = $post->getCreated()->format('Y');
            $month = $post->getCreated()->format('F');
            $blogPosts[$year][$month][] = $post;
        }

//        exit(\Doctrine\Common\Util\Debug::dump($month));

        return $this->render('AcmeProjectBundle:Default:archive.html.twig', array(
            'blogPosts' => $blogPosts,
        ));
    }

1 个答案:

答案 0 :(得分:1)

您想告诉您的archiveAction实际点击了哪个月,因此您需要一个或多个参数:http://symfony.com/doc/current/book/controller.html#route-parameters-as-controller-arguments(我会为/ archive / {year} / {month} /做一些事情。参数,但这取决于你。)然后当有人告诉你myblog.com/archive/2014/04时,他们会看到那些帖子。

接下来,您要显示该月的帖子。为此,您需要使用Doctrine Query构建器。这是一个SO答案,但您可以搜索更多与查询日期相关的内容。 Select entries between dates in doctrine 2