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