我一直在尝试为博客网站设置博客存档,用户点击日期并显示相应的帖子。 (见图)我知道我需要检索所有博客文章并按日期排序,但之后的步骤对我来说是模糊的。获取该数据然后按月/年对其进行排序并将其传递给模板是我遇到问题的部分。
有人能否解释我的错误或提供一个简单的工作示例?
到目前为止我所拥有的:
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,
));
}
答案 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