symfony_example_app/src/Controller/IndexController.php

54 lines
2.0 KiB
PHP

<?php
namespace App\Controller;
use App\Entity\Input\QRCode\QRCode;
use App\Form\Type\QRCodeType;
use App\Service\DTO\QRCodeEntityConverter;
use App\Service\QRCodeGeneratorInterface;
use App\Service\QRCodeQROptionsProviderInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class IndexController extends AbstractController {
public function __construct(private readonly QRCodeQROptionsProviderInterface $qrCodeQROptionsFactory, private readonly QRCodeEntityConverter $codeEntityConverter) {}
#[Route('/', name: 'homepage')]
public function indexAction(
Request $request,
QRCodeGeneratorInterface $qrCodeGenerator,
): Response
{
$qrCodeImage = null;
$qrCode = $this->createQrCodeEntity();
$form = $this->createForm(QRCodeType::class, $qrCode);
if ($request->isMethod('POST')) {
$form->submit($request->request->all($form->getName()));
if ($form->isSubmitted() && $form->isValid()) {
/* Puvodne jsem premyslel nad redirectem a ulozenim obrazku
do session, nicmene u takovehleho typu aplikace me to prijde naopak kontraproduktivni.
a zadani o tom mlci. Navic v pripade ze aplikace bude provozovana ve vice instancich
by se musela resit memcache, redis... */
$qrCodeImage = $qrCodeGenerator->generateQRCodeFromEntity($this->codeEntityConverter->convert($qrCode));
$form = $this->createForm(QRCodeType::class, $this->createQrCodeEntity());
}
}
return $this->render('index/homepage.html.twig', [
'form' => $form,
'qrCodeImage' => $qrCodeImage
]);
}
private function createQrCodeEntity(): QRCode {
return new QRCode(
codeQROptions: $this->qrCodeQROptionsFactory->getDefault()
);
}
}