1616use Mopa \Bundle \BootstrapBundle \Twig \IconExtension ;
1717use Symfony \Bridge \Twig \Extension \FormExtension ;
1818use Symfony \Bridge \Twig \Extension \TranslationExtension ;
19+ use Symfony \Component \Form \FormRenderer ;
1920use Symfony \Bridge \Twig \Form \TwigRenderer ;
2021use Symfony \Bridge \Twig \Form \TwigRendererEngine ;
2122use Symfony \Bridge \Twig \Tests \Extension \Fixtures \StubTranslator ;
2223use Symfony \Component \Form \Forms ;
2324use Symfony \Component \Form \FormView ;
2425use Symfony \Component \Form \PreloadedExtension ;
2526use Symfony \Component \Form \Test \FormIntegrationTestCase ;
27+ use Symfony \Component \HttpKernel \Kernel as SymfonyKernel ;
2628
2729abstract class AbstractDivLayoutTest extends FormIntegrationTestCase
2830{
2931 protected $ renderer ;
32+ protected $ rendererEngine ;
33+ protected $ environment ;
3034 protected $ tabFactory ;
3135 protected $ formTypeMap = array (
3236 'form ' => 'Symfony\Component\Form\Extension\Core\Type\FormType ' ,
@@ -46,7 +50,8 @@ protected function setUp()
4650
4751 parent ::setUp ();
4852
49- $ reflection = new \ReflectionClass ('Symfony\Bridge\Twig\Form\TwigRenderer ' );
53+ $ reflectionClass = class_exists ('Symfony\Bridge\Twig\Form\TwigRenderer ' ) ? 'Symfony\Bridge\Twig\Form\TwigRenderer ' : 'Symfony\Bridge\Twig\Form\TwigRendererEngine ' ;
54+ $ reflection = new \ReflectionClass ($ reflectionClass );
5055 $ bridgeDirectory = dirname ($ reflection ->getFileName ()).'/../Resources/views/Form ' ;
5156
5257 $ loader = new \Twig_Loader_Filesystem (array (
@@ -56,41 +61,63 @@ protected function setUp()
5661
5762 $ loader ->addPath (__DIR__ .'/../../Resources/views ' , 'MopaBootstrap ' );
5863
59- $ environment = new \Twig_Environment ($ loader , array ('strict_variables ' => true ));
60- $ environment ->addExtension (new TranslationExtension (new StubTranslator ()));
61- $ environment ->addExtension (new IconExtension ('fontawesome ' ));
62- $ environment ->addExtension (new TwigFormExtension ());
63- $ environment ->addGlobal ('global ' , '' );
64+ $ this -> environment = new \Twig_Environment ($ loader , array ('strict_variables ' => true ));
65+ $ this -> environment ->addExtension (new TranslationExtension (new StubTranslator ()));
66+ $ this -> environment ->addExtension (new IconExtension ('fontawesome ' ));
67+ $ this -> environment ->addExtension (new TwigFormExtension ());
68+ $ this -> environment ->addGlobal ('global ' , '' );
6469
65- $ rendererEngine = new TwigRendererEngine (array (
70+ $ this -> rendererEngine = new TwigRendererEngine (array (
6671 'form_div_layout.html.twig ' ,
6772 'fields.html.twig ' ,
68- ), $ environment );
73+ ), $ this -> environment );
6974
70- if (interface_exists ( ' Symfony\Component\Security\Csrf\CsrfTokenManagerInterface ' )) {
71- $ csrfProviderInterface = ' Symfony\Component\Security\Csrf\CsrfTokenManagerInterface ' ;
75+ if (version_compare (SymfonyKernel:: VERSION , ' 3.0.0 ' , ' < ' )) {
76+ $ this -> setUpVersion2 () ;
7277 } else {
73- $ csrfProviderInterface = ' Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface ' ;
78+ $ this -> setUpVersion3Plus () ;
7479 }
75-
76- $ csrfProvider = $ this ->getMockBuilder ($ csrfProviderInterface )->getMock ();
77- $ this ->renderer = new TwigRenderer ($ rendererEngine , $ csrfProvider );
78- $ environment ->addExtension ($ extension = new FormExtension ($ this ->renderer ));
79- $ extension ->initRuntime ($ environment );
80- $ this ->registerTwigRuntimeLoader ($ environment , $ this ->renderer );
8180 }
8281
83- protected function registerTwigRuntimeLoader ( \ Twig_Environment $ environment , TwigRenderer $ renderer )
82+ private function setUpVersion2 ( )
8483 {
85- if (!method_exists ($ environment , 'addRuntimeLoader ' )) {
86- return ;
87- }
84+ $ csrfProvider = $ this ->getMockBuilder ('Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface ' )->getMock ();
85+ $ this ->renderer = new TwigRenderer ($ this ->rendererEngine , $ csrfProvider );
86+ $ this ->environment ->addExtension ($ extension = new FormExtension ($ this ->renderer ));
87+ $ extension ->initRuntime ($ this ->environment );
8888
89+ // Add runtime loader
8990 $ loader = $ this ->getMockBuilder ('Twig_RuntimeLoaderInterface ' )->getMock ();
9091 $ loader ->expects ($ this ->any ())->method ('load ' )->will ($ this ->returnValueMap (array (
91- array ('Symfony\Bridge\Twig\Form\TwigRenderer ' , $ renderer ),
92+ array ('Symfony\Bridge\Twig\Form\TwigRenderer ' , $ this -> renderer ),
9293 )));
93- $ environment ->addRuntimeLoader ($ loader );
94+ $ this ->environment ->addRuntimeLoader ($ loader );
95+ }
96+
97+ private function setUpVersion3Plus ()
98+ {
99+ $ csrfProvider = $ this ->getMockBuilder ('Symfony\Component\Security\Csrf\CsrfTokenManagerInterface ' )->getMock ();
100+ $ loaders = array (
101+ 'Symfony\Component\Form\FormRenderer ' => function () use ($ csrfProvider ) {
102+ return new FormRenderer ($ this ->rendererEngine , $ csrfProvider );
103+ },
104+ );
105+
106+ $ runtime = 'Symfony\Component\Form\FormRenderer ' ;
107+
108+ if (class_exists ('Symfony\Bridge\Twig\Form\TwigRenderer ' )) {
109+ $ loaders ['Symfony\Bridge\Twig\Form\TwigRenderer ' ] = function () use ($ csrfProvider ) {
110+ return new TwigRenderer ($ this ->rendererEngine , $ csrfProvider );
111+ };
112+
113+ $ runtime = 'Symfony\Bridge\Twig\Form\TwigRenderer ' ;
114+ }
115+
116+ // Add runtime loader
117+ $ this ->environment ->addRuntimeLoader (new \Twig_FactoryRuntimeLoader ($ loaders ));
118+ $ this ->renderer = $ this ->environment ->getRuntime ($ runtime );
119+
120+ $ this ->environment ->addExtension (new FormExtension ());
94121 }
95122
96123 /**
0 commit comments