patternengine-php-twig
patternengine-php-twig copied to clipboard
Token-like patterns no longer treated as templates
If you have templates that have typos in their includes, the use of the Twig_Loader_String causes the typo to be echoed out:
{% include "foo" %}
results in the string "foo" to be printed out unless "foo" is a twig template.
This change causes "foo" to no longer be printed out, but template generation to fail, because "foo" is not present.
This change also allows more of the twig features to be used, such as conditional includes and dynamic includes:
{% set foo = "something" %}
{% include [ foo, "fallback" ] %}
Before this change, the string "something" would always be printed. After the change, either the template "something" is included, otherwise, the template "fallback" is included, or else an error is raised:
Twig_Error_Loader: Unable to find one of the following templates:
"something", "fallback"
To be completely honest I expect this might break some pattern libraries, because of typos in obscure twig files. So it might be that this behaviour should be "opt-in". I wanted to do that, but I was unsure of the best way of providing this opt-in-ness, or if it is a good idea at all.