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