Check If Twig Template Exists in Symfony 7

Check If Twig Template Exists in Symfony 7

When working with a Symfony application that relies on dynamic Twig template names, it's essential to ensure that the templates are present in the file system. Checking if a Twig template exists before attempting to render it can help prevent runtime errors and provide a more robust user experience. This tutorial shows how to check if Twig template exists in Symfony 7.

We can inject the Environment dependency in a controller or service. The getLoader method can be called on the Twig environment to obtain the loader responsible for locating and loading templates. The loader provides the exists method, which allows checking if the specified Twig template exists.

src/Controller/TestController.php

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Twig\Environment;

class TestController extends AbstractController
{
    #[Route('/')]
    public function index(Environment $twig): Response
    {
        $loader = $twig->getLoader();
        if (!$loader->exists('test/index.html.twig')) {
            return new Response('Twig template not exists');
        }

        return new Response();
    }
}

Leave a Comment

Cancel reply

Your email address will not be published.