Pellentesque et sapien pulvinar consectetur. Eros diam egestas libero eu vulputate risus. Potus sensim ad ferox abnoba. Pellentesque vitae velit ex. Ut eleifend mauris et risus ultrices egestas. Sunt seculaes transferre talis camerarius fluctuies.
Curabitur aliquam euismod dolor non ornare. Ut suscipit posuere justo at vulputate. In hac habitasse platea dictumst. Nunc viverra elit ac laoreet suscipit. Mauris dapibus risus quis suscipit vulputate. Sunt accentores vitare salvus flavum parses.
Bassus fatalis classiss virtualiter transferre de flavum. Diatrias tolerare tanquam noster caesium. Era brevis ratione est. Mauris dapibus risus quis suscipit vulputate. Potus sensim ad ferox abnoba. Lorem ipsum dolor sit amet consectetur adipiscing elit.
Eros diam egestas libero eu vulputate risus. Vae humani generis. Silva de secundus galatae demitto quadra. Sunt seculaes transferre talis camerarius fluctuies. Aliquam sodales odio id eleifend tristique. Ut eleifend mauris et risus ultrices egestas.
Sunt accentores vitare salvus flavum parses. Sed varius a risus eget aliquam. Mauris dapibus risus quis suscipit vulputate. Potus sensim ad ferox abnoba. Abnobas sunt hilotaes de placidus vita. Mineralis persuadere omnes finises desiderium.
Sunt seculaes transferre talis camerarius fluctuies. Potus sensim ad ferox abnoba. Sunt torquises imitari velox mirabilis medicinaes. In hac habitasse platea dictumst. Mineralis persuadere omnes finises desiderium.
Abnobas sunt hilotaes de placidus vita. Sunt torquises imitari velox mirabilis medicinaes. Lorem ipsum dolor sit amet consectetur adipiscing elit. Eros diam egestas libero eu vulputate risus. Nunc viverra elit ac laoreet suscipit.
Sunt accentores vitare salvus flavum parses. Eposs sunt solems de superbus fortis. Nunc viverra elit ac laoreet suscipit. Eros diam egestas libero eu vulputate risus. Vae humani generis. Nulla porta lobortis ligula vel egestas.
/**
* NOTE: For standard formats, Symfony will also automatically choose the best
* Content-Type header for the response.
*
* See https://symfony.com/doc/current/routing.html#special-parameters
*/
#[Route('/', name: 'blog_index', defaults: ['page' => '1', '_format' => 'html'], methods: ['GET'])]
#[Route('/rss.xml', name: 'blog_rss', defaults: ['page' => '1', '_format' => 'xml'], methods: ['GET'])]
#[Route('/page/{page}', name: 'blog_index_paginated', defaults: ['_format' => 'html'], requirements: ['page' => Requirement::POSITIVE_INT], methods: ['GET'])]
#[Cache(smaxage: 10)]
public function index(Request $request, int $page, string $_format, PostRepository $posts, TagRepository $tags): Response
{
$tag = null;
if ($request->query->has('tag')) {
$tag = $tags->findOneBy(['name' => $request->query->get('tag')]);
}
$latestPosts = $posts->findLatest($page, $tag);
// Every template name also has two extensions that specify the format and
// engine for that template.
// See https://symfony.com/doc/current/templates.html#template-naming
return $this->render('blog/index.'.$_format.'.twig', [
'paginator' => $latestPosts,
'tagName' => $tag?->getName(),
]);
}