From 4e4be81c4f5ff9c9c9131f158f124d6cbadadced Mon Sep 17 00:00:00 2001 From: Awilum Date: Wed, 8 Jan 2020 19:54:10 +0300 Subject: [PATCH] Flextype Core: Load twig extensions based on settings.twig.extensions array #351 --- flextype/config/settings.yaml | 3 ++ flextype/dependencies.php | 53 ++++++----------------------------- 2 files changed, 12 insertions(+), 44 deletions(-) diff --git a/flextype/config/settings.yaml b/flextype/config/settings.yaml index fd9be7bb..af06e298 100644 --- a/flextype/config/settings.yaml +++ b/flextype/config/settings.yaml @@ -186,11 +186,14 @@ http_version: '1.1' # - charset: The charset used by the templates. # # - cache: Set false to disable caching. +# +# - extensions Flextype Twig Extension to load. twig: auto_reload: true cache: true debug: false charset: "UTF-8" + extensions: ['Cache', 'Entries', 'Emitter', 'Flash', 'I18n', 'Json', 'Yaml', 'Parser', 'Markdown', 'Filesystem', 'Date', 'Assets', 'Csrf', 'Shortcodes', 'Snippets', 'GlobalVars'] # Slugify # diff --git a/flextype/dependencies.php b/flextype/dependencies.php index 9cec775b..e65a64fb 100644 --- a/flextype/dependencies.php +++ b/flextype/dependencies.php @@ -253,53 +253,18 @@ $flextype['view'] = static function ($container) { // Add Twig Debug Extension $view->addExtension(new DebugExtension()); - // Add Cache Twig Extension - $view->addExtension(new CacheTwigExtension($container)); + // Load Flextype Twig extensions from directory /flextype/twig/ based on settings.twig.extensions array + $twig_extensions = $container['registry']->get('settings.twig.extensions'); - // Add Entries Twig Extension - $view->addExtension(new EntriesTwigExtension($container)); + foreach($twig_extensions as $twig_extension) { - // Add Emitter Twig Extension - $view->addExtension(new EmitterTwigExtension($container)); + $twig_extension_class_name = $twig_extension . 'TwigExtension'; + $twig_extension_class_name_with_namespace = 'Flextype\\' . $twig_extension . 'TwigExtension'; - // Add Flash Twig Extension - $view->addExtension(new FlashTwigExtension($container)); - - // Add I18n Twig Extension - $view->addExtension(new I18nTwigExtension()); - - // Add Json Twig Extension - $view->addExtension(new JsonTwigExtension($container)); - - // Add Yaml Twig Extension - $view->addExtension(new YamlTwigExtension($container)); - - // Add Parser Twig Extension - $view->addExtension(new ParserTwigExtension($container)); - - // Add Markdown Twig Extension - $view->addExtension(new MarkdownTwigExtension($container)); - - // Add Filesystem Twig Extension - $view->addExtension(new FilesystemTwigExtension()); - - // Add Date Twig Extension - $view->addExtension(new DateTwigExtension()); - - // Add Assets Twig Extension - $view->addExtension(new AssetsTwigExtension()); - - // Add Csrf Twig Extension - $view->addExtension(new CsrfTwigExtension($container->get('csrf'))); - - // Add Global Vars Twig Extension - $view->addExtension(new GlobalVarsTwigExtension($container)); - - // Add Global Shortcodes Twig Extension - $view->addExtension(new ShortcodesTwigExtension($container)); - - // Add Global Snippets Twig Extension - $view->addExtension(new SnippetsTwigExtension($container)); + if (file_exists(ROOT_DIR . '/flextype/twig/' . $twig_extension_class_name . '.php')) { + $view->addExtension(new $twig_extension_class_name_with_namespace($container)); + } + } // Return view return $view;