Lorem ipsum dolor sit amet consectetur adipiscing elit. Ubi est barbatus nix. Urna nisl sollicitudin id varius orci quam id turpis. In hac habitasse platea dictumst. Teres talis saepe tractare de camerarius flavum sensorem.
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.
Potus sensim ad ferox abnoba. Abnobas sunt hilotaes de placidus vita. Nulla porta lobortis ligula vel egestas. Ubi est audax amicitia. Era brevis ratione est. Nunc viverra elit ac laoreet suscipit. Pellentesque et sapien pulvinar consectetur.
/**
* 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(),
]);
}