When your template cannot be found in Symfony 4

While I was playing with GraphQL in Symfony I wanted to use a pre-symfony 4 bundle to provide a GraphQL server. When I wanted to go to a page that used a twig template I got the following error:

Unable to find template "GraphQLBundle:Feature:explorer.html.twig" 
(looked into: /var/www/templates, /var/www/templates, 
/var/www/vendor/symfony/twig-bridge/Resources/views/Form).

Since I haven’t been working with Symfony 4 that long I was surprised that this didn’t work. In Symfony 3.x this didn’t give any issues.

After some searching, I found this issue where they explain that the “x:x:x.html.twig” notation is no longer supported by default in Symfony 4. In order to enable support for this you need to do two things:

  1. Install the templating component using the following command
    $ composer require templating
  2. Add the following lines to config/packages/framework.yml
    templating:
        engines: ['twig']

As soon as you have performed these steps, Symfony 4 will now understand how to find templates with colons in them!

Update: Christophe Coevoet mentioned on Twitter that this notation will become deprecated in a future 4.x.x release; so this trick will only have a limited lifetime.