<?php
/**
* Created by simpson <simpsonwork@gmail.com>
* Date: 27.11.2019
* Time: 16:17
*/
namespace App\Twig;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class RoutingExtension extends AbstractExtension
{
public function __construct(
protected UrlGeneratorInterface $urlGenerator,
protected RequestStack $requestStack
) {}
public function getFunctions()
{
return [
new TwigFunction('toggle_url_locale', [$this, 'toggleUrlLocale']),
];
}
public function toggleUrlLocale(string $locale): string
{
$request = $this->requestStack->getMasterRequest();
if (!$request) {
return '';
}
$routeName = $request->attributes->get('_route');
if (!$routeName) {
return '';
}
$parameters = $request->attributes->get('_route_params', []);
$parameters['_locale'] = $locale;
return $this->urlGenerator->generate($routeName, $parameters, UrlGeneratorInterface::ABSOLUTE_PATH);
}
}