16
16
use Mopa \Bundle \BootstrapBundle \Twig \IconExtension ;
17
17
use Symfony \Bridge \Twig \Extension \FormExtension ;
18
18
use Symfony \Bridge \Twig \Extension \TranslationExtension ;
19
+ use Symfony \Component \Form \FormRenderer ;
19
20
use Symfony \Bridge \Twig \Form \TwigRenderer ;
20
21
use Symfony \Bridge \Twig \Form \TwigRendererEngine ;
21
22
use Symfony \Bridge \Twig \Tests \Extension \Fixtures \StubTranslator ;
22
23
use Symfony \Component \Form \Forms ;
23
24
use Symfony \Component \Form \FormView ;
24
25
use Symfony \Component \Form \PreloadedExtension ;
25
26
use Symfony \Component \Form \Test \FormIntegrationTestCase ;
27
+ use Symfony \Component \HttpKernel \Kernel as SymfonyKernel ;
26
28
27
29
abstract class AbstractDivLayoutTest extends FormIntegrationTestCase
28
30
{
29
31
protected $ renderer ;
32
+ protected $ rendererEngine ;
33
+ protected $ environment ;
30
34
protected $ tabFactory ;
31
35
protected $ formTypeMap = array (
32
36
'form ' => 'Symfony\Component\Form\Extension\Core\Type\FormType ' ,
@@ -46,7 +50,8 @@ protected function setUp()
46
50
47
51
parent ::setUp ();
48
52
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 );
50
55
$ bridgeDirectory = dirname ($ reflection ->getFileName ()).'/../Resources/views/Form ' ;
51
56
52
57
$ loader = new \Twig_Loader_Filesystem (array (
@@ -56,41 +61,63 @@ protected function setUp()
56
61
57
62
$ loader ->addPath (__DIR__ .'/../../Resources/views ' , 'MopaBootstrap ' );
58
63
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 ' , '' );
64
69
65
- $ rendererEngine = new TwigRendererEngine (array (
70
+ $ this -> rendererEngine = new TwigRendererEngine (array (
66
71
'form_div_layout.html.twig ' ,
67
72
'fields.html.twig ' ,
68
- ), $ environment );
73
+ ), $ this -> environment );
69
74
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 () ;
72
77
} else {
73
- $ csrfProviderInterface = ' Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface ' ;
78
+ $ this -> setUpVersion3Plus () ;
74
79
}
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 );
81
80
}
82
81
83
- protected function registerTwigRuntimeLoader ( \ Twig_Environment $ environment , TwigRenderer $ renderer )
82
+ private function setUpVersion2 ( )
84
83
{
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 );
88
88
89
+ // Add runtime loader
89
90
$ loader = $ this ->getMockBuilder ('Twig_RuntimeLoaderInterface ' )->getMock ();
90
91
$ 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 ),
92
93
)));
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 ());
94
121
}
95
122
96
123
/**
0 commit comments