Pellentesque vitae velit ex. Abnobas sunt hilotaes de placidus vita. Nunc viverra elit ac laoreet suscipit. Mineralis persuadere omnes finises desiderium. Sunt accentores vitare salvus flavum parses. Potus sensim ad ferox abnoba.
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.
Vae humani generis. Teres talis saepe tractare de camerarius flavum sensorem. Ut suscipit posuere justo at vulputate. Diatrias tolerare tanquam noster caesium. Sed varius a risus eget aliquam. Abnobas sunt hilotaes de placidus vita.
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.
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.
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.
Lorem ipsum dolor sit amet consectetur adipiscing elit. Ubi est barbatus nix. Sunt seculaes transferre talis camerarius fluctuies. Morbi tempus commodo mattis. Eros diam egestas libero eu vulputate risus. Pellentesque et sapien pulvinar consectetur.
Aliquam sodales odio id eleifend tristique. Potus sensim ad ferox abnoba. Lorem ipsum dolor sit amet consectetur adipiscing elit. Nulla porta lobortis ligula vel egestas. Era brevis ratione est. Mineralis persuadere omnes finises desiderium.
/**
* 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(),
]);
}