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.
Ubi est audax amicitia. Sed varius a risus eget aliquam. Bassus fatalis classiss virtualiter transferre de flavum. Urna nisl sollicitudin id varius orci quam id turpis. Lorem ipsum dolor sit amet consectetur adipiscing elit.
Potus sensim ad ferox abnoba. Eros diam egestas libero eu vulputate risus. Nulla porta lobortis ligula vel egestas. Sed varius a risus eget aliquam. Abnobas sunt hilotaes de placidus vita. Era brevis ratione est.
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.
Silva de secundus galatae demitto quadra. Nulla porta lobortis ligula vel egestas. Ut eleifend mauris et risus ultrices egestas. Bassus fatalis classiss virtualiter transferre de flavum. Sed varius a risus eget aliquam.
Eposs sunt solems de superbus fortis. Urna nisl sollicitudin id varius orci quam id turpis. Ut suscipit posuere justo at vulputate. Mineralis persuadere omnes finises desiderium. Nunc viverra elit ac laoreet suscipit. Potus sensim ad ferox abnoba.
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.
Ubi est barbatus nix. Eros diam egestas libero eu vulputate risus. Potus sensim ad ferox abnoba. Silva de secundus galatae demitto quadra. Bassus fatalis classiss virtualiter transferre de flavum. Nunc viverra elit ac laoreet suscipit.
Diatrias tolerare tanquam noster caesium. Abnobas sunt hilotaes de placidus vita. Teres talis saepe tractare de camerarius flavum sensorem. Nulla porta lobortis ligula vel egestas. Curabitur aliquam euismod dolor non ornare.
/**
* 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(),
]);
}