diff --git a/CHANGELOG.md b/CHANGELOG.md index e900113..0dd2583 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - `data` and `files` were wrongly exposed on `Form` class. Changed visibility to private and added `getData` and `getFiles` methods. - Allow non-required file fields - Fixed choice field values check + - Added retrocompability between Twig v1 and v2 ## [2.0.3] - 2017-12-13 ### Added diff --git a/src/Renderers/TwigRenderer.php b/src/Renderers/TwigRenderer.php index a99cc8f..cd4b25c 100644 --- a/src/Renderers/TwigRenderer.php +++ b/src/Renderers/TwigRenderer.php @@ -27,17 +27,33 @@ public function __construct(array $templates_dirs, array $options = array()) { $loaders = new ChainLoader(); + /* To maintain compatibility with non-PSR4 versions of Twig */ + if (class_exists('Twig_Loader_Filesystem')) { + $class = 'Twig_Loader_Filesystem'; + $envClass = 'Twig_Environment'; + } else { + $class = 'FilesystemLoader'; + $envClass = 'Environment'; + } + foreach ($templates_dirs as $template_dir) { - $loaders->addLoader(new FilesystemLoader($template_dir)); + $loaders->addLoader(new $class($template_dir)); } - $this->twig = new Environment($loaders, $options); + $this->twig = new $envClass($loaders, $options); $this->setFilters(); } public function setFilters() { - $filter_merge_str = new TwigFilter('merge_str', function ($attrs, array $options = array()) { + /* To maintain compatibility with non-PSR4 versions of Twig */ + if (class_exists('Twig_SimpleFilter')) { + $class = 'Twig_SimpleFilter'; + } else { + $class = 'TwigFilter'; + } + + $filter_merge_str = new $class('merge_str', function ($attrs, array $options = array()) { $key = $options[0]; $value = $options[1];