I’m working on a project in Symfony2 and I have several small pieces of html that need to be included in one of my main views. According to the official Twig documentation I should be able to simply use {% include 'filename.html' %} but in Symfony unless the filename ends in “.html.twig” it throws and error saying it cannot find the file. I’d like to avoid using Twig templates for these files since they have no dynamic content and lots of double braces (they’re javascript templates) and requiring the template designer to have to wrap every one of these files in {% raw %} tags seems like a really Kludgey way to do it.
I’m working on a project in Symfony2 and I have several small pieces of
Share
A quick recap on twig file extensions (taken from the documentation):
Therefore it makes sense to me that including a file as .html would be at the least ambiguous even if it didn’t throw an error.
So you have 3 choices:
If the files are purely javascript then include them as script tags in your page.
If they are mixed HTML and JS then escape the JS with {% raw %} and include the files as foo.html.twig templates. If there are lots of scripts being included like this then most likely your designers could do with a little refactoring and move the bulk of their scripts to external files (see option 1)
If you really insist you could always write a Twig extension to include raw HTML files. (EDIT: See @Haprog’s answer below for more details on this option).
{{ include_html(‘foo/bar.html’) }}
UPDATE 2015 twig has since added the source function:
{{ source('AcmeSomeBundle:Default:somefile.html.twig') }}Kudos to @Nigel Angel in the comments below for option 4.