From a7ebe9c1a4b22f163bb5da4eea39c1fe19ce57a0 Mon Sep 17 00:00:00 2001 From: Robin Chalas Date: Thu, 22 Dec 2016 11:59:07 +0100 Subject: [PATCH] [TwigBridge] Fix upgrade/changelog notes --- UPGRADE-3.2.md | 32 +++++++++++++++++++++++++-- UPGRADE-4.0.md | 32 +++++++++++++++++++++++++-- src/Symfony/Bridge/Twig/CHANGELOG.md | 33 ++++++++++++++++++++++++++-- 3 files changed, 91 insertions(+), 6 deletions(-) diff --git a/UPGRADE-3.2.md b/UPGRADE-3.2.md index ac66f7d424b9d..d5abb758542e8 100644 --- a/UPGRADE-3.2.md +++ b/UPGRADE-3.2.md @@ -133,8 +133,36 @@ Serializer TwigBridge ---------- - * Deprecated the possibility to inject the Form Twig Renderer into the form - extension. Inject it into the `TwigRendererEngine` instead. + * Injecting the Form `TwigRenderer` into the `FormExtension` is deprecated and has no more effect. + Upgrade Twig to `^1.30`, inject the `Twig_Environment` into the `TwigRendererEngine` and load + the `TwigRenderer` using the `Twig_FactoryRuntimeLoader` instead. + + Before: + + ```php + use Symfony\Bridge\Twig\Extension\FormExtension; + use Symfony\Bridge\Twig\Form\TwigRenderer; + use Symfony\Bridge\Twig\Form\TwigRendererEngine; + + // ... + $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig')); + $rendererEngine->setEnvironment($twig); + $twig->addExtension(new FormExtension(new TwigRenderer($rendererEngine, $csrfTokenManager))); + ``` + + After: + + ```php + $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig'), $twig); + $twig->addRuntimeLoader(new \Twig_FactoryRuntimeLoader(array( + TwigRenderer::class => function () use ($rendererEngine, $csrfTokenManager) { + return new TwigRenderer($rendererEngine, $csrfTokenManager); + }, + ))); + $twig->addExtension(new FormExtension()); + ``` + + * Deprecated the `TwigRendererEngineInterface` interface, it will be removed in 4.0. Validator --------- diff --git a/UPGRADE-4.0.md b/UPGRADE-4.0.md index 7fc46adbc0609..35506cfda071f 100644 --- a/UPGRADE-4.0.md +++ b/UPGRADE-4.0.md @@ -186,8 +186,36 @@ Translation TwigBridge ---------- - * The possibility to inject the Form Twig Renderer into the form extension - has been removed. Inject it into the `TwigRendererEngine` instead. + * Removed the possibility to inject the Form `TwigRenderer` into the `FormExtension`. + Upgrade Twig to `^1.30`, inject the `Twig_Environment` into the `TwigRendererEngine` and load + the `TwigRenderer` using the `Twig_FactoryRuntimeLoader` instead. + + Before: + + ```php + use Symfony\Bridge\Twig\Extension\FormExtension; + use Symfony\Bridge\Twig\Form\TwigRenderer; + use Symfony\Bridge\Twig\Form\TwigRendererEngine; + + // ... + $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig')); + $rendererEngine->setEnvironment($twig); + $twig->addExtension(new FormExtension(new TwigRenderer($rendererEngine, $csrfTokenManager))); + ``` + + After: + + ```php + $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig'), $twig); + $twig->addRuntimeLoader(new \Twig_FactoryRuntimeLoader(array( + TwigRenderer::class => function () use ($rendererEngine, $csrfTokenManager) { + return new TwigRenderer($rendererEngine, $csrfTokenManager); + }, + ))); + $twig->addExtension(new FormExtension()); + ``` + + * Removed the `TwigRendererEngineInterface` interface. Validator --------- diff --git a/src/Symfony/Bridge/Twig/CHANGELOG.md b/src/Symfony/Bridge/Twig/CHANGELOG.md index 685e1c9b083f0..dee3db5a37655 100644 --- a/src/Symfony/Bridge/Twig/CHANGELOG.md +++ b/src/Symfony/Bridge/Twig/CHANGELOG.md @@ -5,8 +5,37 @@ CHANGELOG ----- * added `AppVariable::getToken()` - * Deprecated the possibility to inject the Form Twig Renderer into the form - extension. Inject it on TwigRendererEngine instead. + * Deprecated the possibility to inject the Form `TwigRenderer` into the `FormExtension`. + * [BC BREAK] Registering the `FormExtension` without configuring a runtime loader for the `TwigRenderer` + doesn't work anymore. + + Before: + + ```php + use Symfony\Bridge\Twig\Extension\FormExtension; + use Symfony\Bridge\Twig\Form\TwigRenderer; + use Symfony\Bridge\Twig\Form\TwigRendererEngine; + + // ... + $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig')); + $rendererEngine->setEnvironment($twig); + $twig->addExtension(new FormExtension(new TwigRenderer($rendererEngine, $csrfTokenManager))); + ``` + + After: + + ```php + // ... + $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig'), $twig); + // require Twig 1.30+ + $twig->addRuntimeLoader(new \Twig_FactoryRuntimeLoader(array( + TwigRenderer::class => function () use ($rendererEngine, $csrfTokenManager) { + return new TwigRenderer($rendererEngine, $csrfTokenManager); + }, + ))); + $twig->addExtension(new FormExtension()); + ``` + * Deprecated the `TwigRendererEngineInterface` interface. 2.7.0 -----