32 lines
968 B
PHP
32 lines
968 B
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace App\Infrastructure\Http\Controller\Admin;
|
||
|
|
|
||
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||
|
|
use Symfony\Component\HttpFoundation\Request;
|
||
|
|
use Symfony\Component\HttpFoundation\Response;
|
||
|
|
use Symfony\Component\Routing\Attribute\Route;
|
||
|
|
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||
|
|
|
||
|
|
#[IsGranted('ROLE_USER')]
|
||
|
|
final class LocaleSwitchController extends AbstractController
|
||
|
|
{
|
||
|
|
private const array SUPPORTED = ['en', 'de'];
|
||
|
|
|
||
|
|
#[Route('/admin/locale/{locale}', name: 'admin_locale_switch', requirements: ['locale' => 'en|de'])]
|
||
|
|
public function switch(string $locale, Request $request): Response
|
||
|
|
{
|
||
|
|
if (!\in_array($locale, self::SUPPORTED, true)) {
|
||
|
|
$locale = 'en';
|
||
|
|
}
|
||
|
|
|
||
|
|
$request->getSession()->set('_locale', $locale);
|
||
|
|
|
||
|
|
$referer = $request->headers->get('referer');
|
||
|
|
|
||
|
|
return $this->redirect($referer ?: $this->generateUrl('easyadmin'));
|
||
|
|
}
|
||
|
|
}
|