Lorem ipsum dolor sit amet consectetur adipiscing elit. In hac habitasse platea dictumst. Nulla porta lobortis ligula vel egestas. Sunt seculaes transferre talis camerarius fluctuies. Mineralis persuadere omnes finises desiderium.
Mineralis persuadere omnes finises desiderium. Sunt torquises imitari velox mirabilis medicinaes. Pellentesque vitae velit ex. Nulla porta lobortis ligula vel egestas. Silva de secundus galatae demitto quadra. Abnobas sunt hilotaes de placidus vita.
Teres talis saepe tractare de camerarius flavum sensorem. Ut suscipit posuere justo at vulputate. Nunc viverra elit ac laoreet suscipit. Curabitur aliquam euismod dolor non ornare. Mauris dapibus risus quis suscipit vulputate.
Abnobas sunt hilotaes de placidus vita. Eros diam egestas libero eu vulputate risus. Aliquam sodales odio id eleifend tristique. Mauris dapibus risus quis suscipit vulputate. Nunc viverra elit ac laoreet suscipit. Era brevis ratione est.
Urna nisl sollicitudin id varius orci quam id turpis. Abnobas sunt hilotaes de placidus vita. Ubi est barbatus nix. Vae humani generis. Morbi tempus commodo mattis. Teres talis saepe tractare de camerarius flavum sensorem.
Silva de secundus galatae demitto quadra. Teres talis saepe tractare de camerarius flavum sensorem. Ubi est audax amicitia. Aliquam sodales odio id eleifend tristique. Ubi est barbatus nix. Eposs sunt solems de superbus fortis.
Ubi est audax amicitia. Era brevis ratione est. Curabitur aliquam euismod dolor non ornare. Aliquam sodales odio id eleifend tristique. Ut eleifend mauris et risus ultrices egestas. Eposs sunt solems de superbus fortis. Pellentesque vitae velit ex.
Silva de secundus galatae demitto quadra. Nunc viverra elit ac laoreet suscipit. Morbi tempus commodo mattis. Sed varius a risus eget aliquam. Bassus fatalis classiss virtualiter transferre de flavum. 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(),
]);
}