src/Controller/AssetController.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\CssService;
  4. use App\Service\JsService;
  5. use App\Service\SvgService;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. class AssetController extends AbstractController
  10. {
  11.     #[Route('/css/{version}.css'name'css'requirements:['version' => '[0-9.]+'])]
  12.     public function css(CssService $cssService$version): Response
  13.     {
  14.         $css $cssService->build($version);
  15.         if ($this->getParameter('kernel.environment') === 'prod') {
  16.             // Mise en cache en gérant un fichier static servi par apache pour la fois suivante
  17.             \file_put_contents($this->getParameter('public_directory') . 'css/' $version '.css'$css);
  18.         }
  19.         return new Response(
  20.             $css,
  21.             Response::HTTP_OK,
  22.             [
  23.                 'Content-Type' => 'text/css'
  24.             ]
  25.         );
  26.     }
  27.     #[Route('/js/{version}.js'name'js'requirements:['version' => '[0-9.]+'])]
  28.     public function js(JsService $jsService$version): Response
  29.     {
  30.         $js $jsService->build($version);
  31.         if ($this->getParameter('kernel.environment') === 'prod') {
  32.             // Mise en cache en gérant un fichier static servi par apache pour la fois suivante
  33.             \file_put_contents($this->getParameter('public_directory') . 'js/' $version '.js'$js);
  34.         }
  35.         return new Response(
  36.             $js,
  37.             Response::HTTP_OK,
  38.             [
  39.                 'Content-Type' => 'text/javascript'
  40.             ]
  41.         );
  42.     }
  43.     #[Route('/img/{version}.svg'name'svg'requirements:['version' => '[0-9.]+'])]
  44.     public function svg(SvgService $svgService$version): Response
  45.     {
  46.         $svg $svgService->build($version);
  47.         if ($this->getParameter('kernel.environment') === 'prod') {
  48.             // Mise en cache en gérant un fichier static servi par apache pour la fois suivante
  49.             \file_put_contents($this->getParameter('public_directory') . 'img/' $version '.svg'$svg);
  50.         }
  51.         return new Response(
  52.             $svg,
  53.             Response::HTTP_OK,
  54.             [
  55.                 'Content-Type' => 'image/svg+xml'
  56.             ]
  57.         );
  58.     }
  59.     #[Route('/designsystem'name'designsystem')]
  60.     public function designsystem(): Response
  61.     {
  62.         return $this->render('assets/designsystem.html.twig');
  63.     }
  64. }