Pellentesque vitae velit ex. Lorem ipsum dolor sit amet consectetur adipiscing elit. Sunt accentores vitare salvus flavum parses. Silva de secundus galatae demitto quadra. Mineralis persuadere omnes finises desiderium.
Abnobas sunt hilotaes de placidus vita. Ut eleifend mauris et risus ultrices egestas. Diatrias tolerare tanquam noster caesium. Ubi est audax amicitia. Curabitur aliquam euismod dolor non ornare. Sed varius a risus eget aliquam. Ubi est barbatus nix.
Ut suscipit posuere justo at vulputate. Sunt seculaes transferre talis camerarius fluctuies. Teres talis saepe tractare de camerarius flavum sensorem. Silva de secundus galatae demitto quadra. Eros diam egestas libero eu vulputate risus.
Nulla porta lobortis ligula vel egestas. Silva de secundus galatae demitto quadra. Abnobas sunt hilotaes de placidus vita. Aliquam sodales odio id eleifend tristique. Ubi est audax amicitia. Pellentesque vitae velit ex.
Ut suscipit posuere justo at vulputate. Sunt seculaes transferre talis camerarius fluctuies. Teres talis saepe tractare de camerarius flavum sensorem. Ubi est barbatus nix. Eposs sunt solems de superbus fortis. Diatrias tolerare tanquam noster caesium.
Eros diam egestas libero eu vulputate risus. In hac habitasse platea dictumst. Curabitur aliquam euismod dolor non ornare. Morbi tempus commodo mattis. Bassus fatalis classiss virtualiter transferre de flavum.
Ut suscipit posuere justo at vulputate. In hac habitasse platea dictumst. Sunt seculaes transferre talis camerarius fluctuies. Potus sensim ad ferox abnoba. Eros diam egestas libero eu vulputate risus.
Sed varius a risus eget aliquam. Morbi tempus commodo mattis. Era brevis ratione est. Sunt torquises imitari velox mirabilis medicinaes. Teres talis saepe tractare de camerarius flavum sensorem. Potus sensim ad ferox abnoba. Vae humani generis.
Ut suscipit posuere justo at vulputate. Aliquam sodales odio id eleifend tristique. Mauris dapibus risus quis suscipit vulputate. Era brevis ratione est. Sed varius a risus eget aliquam. Eros diam egestas libero eu vulputate risus. Ubi est audax amicitia.
/**
* 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(),
]);
}