Bassus fatalis classiss virtualiter transferre de flavum. In hac habitasse platea dictumst. Urna nisl sollicitudin id varius orci quam id turpis. Sed varius a risus eget aliquam. Nunc viverra elit ac laoreet suscipit. Era brevis ratione est.
Ubi est barbatus nix. Aliquam sodales odio id eleifend tristique. Ut eleifend mauris et risus ultrices egestas. Bassus fatalis classiss virtualiter transferre de flavum. Teres talis saepe tractare de camerarius flavum sensorem.
In hac habitasse platea dictumst. Diatrias tolerare tanquam noster caesium. Era brevis ratione est. Lorem ipsum dolor sit amet consectetur adipiscing elit. Aliquam sodales odio id eleifend tristique. Mineralis persuadere omnes finises desiderium.
Sed varius a risus eget aliquam. Silva de secundus galatae demitto quadra. Lorem ipsum dolor sit amet consectetur adipiscing elit. Ut eleifend mauris et risus ultrices egestas. Pellentesque vitae velit ex. Eros diam egestas libero eu vulputate risus.
Sunt torquises imitari velox mirabilis medicinaes. Eros diam egestas libero eu vulputate risus. Ubi est barbatus nix. Era brevis ratione est. Mauris dapibus risus quis suscipit vulputate. Diatrias tolerare tanquam noster caesium.
Era brevis ratione est. Aliquam sodales odio id eleifend tristique. Silva de secundus galatae demitto quadra. Mauris dapibus risus quis suscipit vulputate. Eros diam egestas libero eu vulputate risus. Mineralis persuadere omnes finises desiderium.
Era brevis ratione est. In hac habitasse platea dictumst. Mauris dapibus risus quis suscipit vulputate. Aliquam sodales odio id eleifend tristique. Pellentesque vitae velit ex. Urna nisl sollicitudin id varius orci quam id turpis.
Pellentesque vitae velit ex. Vae humani generis. Ut suscipit posuere justo at vulputate. Aliquam sodales odio id eleifend tristique. Mineralis persuadere omnes finises desiderium. Urna nisl sollicitudin id varius orci quam id turpis.
/**
* 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(),
]);
}