<?php
namespace App\Controller\Core;
use App\Entity\BaseForm;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\HttpFoundation\RequestStack;
class BaseFrontController extends AbstractController
{
protected array $locals = [];
protected RequestStack $requestStack;
/**
* @param RequestStack $requestStack
*/
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
$this->locals['menu_active'] = '';
}
protected function getForm(string $type, BaseForm $entity, string $route, array $parameters = []): FormInterface
{
return $this->createForm($type, $entity, [
'action' => $this->generateUrl($route, $parameters),
'method' => 'POST',
]);
}
protected function getFormView(string $type, BaseForm $entity, string $route, array $parameters = []): FormView
{
return $this->getForm($type, $entity, $route, $parameters)->createView();
}
protected function saveFormSession(string $key, BaseForm $value)
{
$session = $this->requestStack->getSession();
$session->set($key, $value);
}
protected function getFormSession(string $key, $default = null): ?BaseForm
{
$session = $this->requestStack->getSession();
$form = $session->get($key, $default);
$session->remove($key);
return $form;
}
function getRecaptchaToken(): string
{
$request = $this->requestStack->getCurrentRequest();
return (string) $request->request->get('recaptcha_token');
}
function getClientIp(): string
{
$request = $this->requestStack->getCurrentRequest();
return $request->getClientIp();
}
}