2
2
3
3
namespace Admingenerator \FormExtensionsBundle \DependencyInjection ;
4
4
5
+ use Admingenerator \FormExtensionsBundle \Form \Extension \AutocompleteExtension ;
6
+ use Admingenerator \FormExtensionsBundle \Form \Extension \BootstrapSelectExtension ;
7
+ use Admingenerator \FormExtensionsBundle \Form \Extension \HelpMessageExtension ;
8
+ use Admingenerator \FormExtensionsBundle \Form \Extension \NoValidateExtension ;
9
+ use Admingenerator \FormExtensionsBundle \Form \Extension \SingleUploadExtension ;
5
10
use Symfony \Component \Config \FileLocator ;
6
11
use Symfony \Component \DependencyInjection \ContainerBuilder ;
7
12
use Symfony \Component \DependencyInjection \Loader ;
13
+ use Symfony \Component \Form \Extension \Core \Type \ChoiceType ;
14
+ use Symfony \Component \Form \Extension \Core \Type \FormType ;
8
15
use Symfony \Component \HttpKernel \DependencyInjection \Extension ;
9
16
use Symfony \Component \DependencyInjection \Definition ;
10
17
use Symfony \Component \DependencyInjection \Reference ;
@@ -36,9 +43,35 @@ public function load(array $configs, ContainerBuilder $container)
36
43
$ container ->setParameter ('admingenerator.form.include_blueimp ' , $ config ['include_blueimp ' ]);
37
44
$ container ->setParameter ('admingenerator.form.include_gmaps ' , $ config ['include_gmaps ' ]);
38
45
46
+ $ this ->configureExtensions ($ config ['extensions ' ], $ container );
47
+
39
48
$ this ->loadUploadCollectionListener ($ config ['upload_collection ' ], $ container );
40
49
}
41
50
51
+ /**
52
+ * Register the form extensions if required
53
+ *
54
+ * @param array $config
55
+ * @param ContainerBuilder $container
56
+ */
57
+ private function configureExtensions (array $ config , ContainerBuilder $ container ) {
58
+ if ($ config ['autocomplete ' ]) {
59
+ $ this ->registerExtension ($ container , 'form.type_extension.autocomplete ' , AutocompleteExtension::class);
60
+ }
61
+ if ($ config ['bootstrap_select ' ]) {
62
+ $ this ->registerExtension ($ container , 'form.type_extension.bootstrap_select ' , BootstrapSelectExtension::class, ChoiceType::class);
63
+ }
64
+ if ($ config ['help_message ' ]) {
65
+ $ this ->registerExtension ($ container , 'form.type_extension.help_message ' , HelpMessageExtension::class);
66
+ }
67
+ if ($ config ['no_validate ' ]) {
68
+ $ this ->registerExtension ($ container , 'form.type_extension.novalidate ' , NoValidateExtension::class);
69
+ }
70
+ if ($ config ['single_upload ' ]) {
71
+ $ this ->registerExtension ($ container , 'form.type_extension.single_upload ' , SingleUploadExtension::class);
72
+ }
73
+ }
74
+
42
75
/**
43
76
* Add the collection upload listener if required
44
77
*
@@ -65,4 +98,19 @@ private function loadUploadCollectionListener(array $config, ContainerBuilder $c
65
98
$ container ->getDefinition ('admingenerator.form.extensions.type.upload_collection ' )->addMethodCall ('setFileStorage ' , array (new Reference ($ config ['file_storage ' ])));
66
99
}
67
100
}
101
+
102
+ /**
103
+ * @param ContainerBuilder $container
104
+ * @param string $serviceId
105
+ * @param string $extensionClass
106
+ * @param string $extendedTypeClass
107
+ */
108
+ private function registerExtension (ContainerBuilder $ container , string $ serviceId , string $ extensionClass , string $ extendedTypeClass = FormType::class): void
109
+ {
110
+ $ extensionDefinition = new Definition ($ extensionClass );
111
+ $ extensionDefinition ->addTag ('form.type_extension ' , [
112
+ 'extended-type ' => $ extendedTypeClass ,
113
+ ]);
114
+ $ container ->setDefinition ($ serviceId , $ extensionDefinition );
115
+ }
68
116
}
0 commit comments