src/Twig/RoutingExtension.php line 31

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by simpson <simpsonwork@gmail.com>
  4.  * Date: 27.11.2019
  5.  * Time: 16:17
  6.  */
  7. namespace App\Twig;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  10. use Twig\Extension\AbstractExtension;
  11. use Twig\TwigFunction;
  12. class RoutingExtension extends AbstractExtension
  13. {
  14.     public function __construct(
  15.         protected UrlGeneratorInterface $urlGenerator,
  16.         protected RequestStack $requestStack
  17.     ) {}
  18.     public function getFunctions()
  19.     {
  20.         return [
  21.             new TwigFunction('toggle_url_locale', [$this'toggleUrlLocale']),
  22.         ];
  23.     }
  24.     public function toggleUrlLocale(string $locale): string
  25.     {
  26.         $request $this->requestStack->getMasterRequest();
  27.         if (!$request) {
  28.             return '';
  29.         }
  30.         $routeName $request->attributes->get('_route');
  31.         if (!$routeName) {
  32.             return '';
  33.         }
  34.         $parameters $request->attributes->get('_route_params', []);
  35.         $parameters['_locale'] = $locale;
  36.         return $this->urlGenerator->generate($routeName$parametersUrlGeneratorInterface::ABSOLUTE_PATH);
  37.     }
  38. }