Skip to content

Commit 6be01fc

Browse files
tobias-93bobvandevijver
authored andcommitted
Add compatibility with Symfony 7 and 8, rework service config to PHP
1 parent d64037c commit 6be01fc

File tree

6 files changed

+87
-146
lines changed

6 files changed

+87
-146
lines changed

DependencyInjection/AdmingeneratorFormExtensionsExtension.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use Admingenerator\FormExtensionsBundle\Form\Extension\SingleUploadExtension;
1010
use Admingenerator\FormExtensionsBundle\Twig\Extension\ImageAssetsExtension;
1111
use Admingenerator\FormExtensionsBundle\Twig\Extension\IncludeGlobalsExtension;
12-
use Admingenerator\FormExtensionsBundle\Twig\Extension\LegacyIncludeGlobalsExtension;
1312
use Symfony\Component\Config\FileLocator;
1413
use Symfony\Component\DependencyInjection\ContainerBuilder;
1514
use Symfony\Component\DependencyInjection\Loader;
@@ -18,7 +17,6 @@
1817
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
1918
use Symfony\Component\DependencyInjection\Definition;
2019
use Symfony\Component\DependencyInjection\Reference;
21-
use Twig\Environment;
2220

2321
/**
2422
* Loads FormExtensions configuration
@@ -35,8 +33,8 @@ public function load(array $configs, ContainerBuilder $container): void
3533
$configuration = new Configuration();
3634
$config = $this->processConfiguration($configuration, $configs);
3735

38-
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
39-
$loader->load('services.xml');
36+
$loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
37+
$loader->load('services.php');
4038

4139
$container->setParameter('admingenerator.form.upload_manager', $config['upload_manager']);
4240
$container->setParameter('admingenerator.form.image_manipulator', $config['image_manipulator']);
@@ -89,15 +87,15 @@ private function loadUploadCollectionListener(array $config, ContainerBuilder $c
8987
}
9088

9189
$collectionUploadListenerDefinition = new Definition('%admingenerator.form.upload_collection_listener.class%');
92-
$collectionUploadListenerDefinition->setArguments(array(
90+
$collectionUploadListenerDefinition->setArguments([
9391
new Reference($config['file_storage']),
9492
$routeName,
9593
new Reference('property_accessor')
96-
));
94+
]);
9795
$collectionUploadListenerDefinition->addTag('kernel.event_subscriber');
9896
$container->setDefinition('admingenerator.form.upload_collection_listener', $collectionUploadListenerDefinition);
9997

100-
$container->getDefinition('admingenerator.form.extensions.type.upload_collection')->addMethodCall('setFileStorage', array(new Reference($config['file_storage'])));
98+
$container->getDefinition('admingenerator.form.extensions.type.upload_collection')->addMethodCall('setFileStorage', [new Reference($config['file_storage'])]);
10199
}
102100
}
103101

Resources/config/services.php

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
use Admingenerator\FormExtensionsBundle\EventListener\UploadCollectionListener;
4+
use Admingenerator\FormExtensionsBundle\Form\Type\BootstrapFieldsetCollectionType;
5+
use Admingenerator\FormExtensionsBundle\Form\Type\BootstrapTableCollectionType;
6+
use Admingenerator\FormExtensionsBundle\Form\Type\DatePickerType;
7+
use Admingenerator\FormExtensionsBundle\Form\Type\DateRangePickerType;
8+
use Admingenerator\FormExtensionsBundle\Form\Type\DateTimePickerType;
9+
use Admingenerator\FormExtensionsBundle\Form\Type\DoubleListDocumentType;
10+
use Admingenerator\FormExtensionsBundle\Form\Type\DoubleListEntityType;
11+
use Admingenerator\FormExtensionsBundle\Form\Type\DoubleListModelType;
12+
use Admingenerator\FormExtensionsBundle\Form\Type\ElasticTextareaType;
13+
use Admingenerator\FormExtensionsBundle\Form\Type\GoogleMapType;
14+
use Admingenerator\FormExtensionsBundle\Form\Type\KnobType;
15+
use Admingenerator\FormExtensionsBundle\Form\Type\MiniColorsType;
16+
use Admingenerator\FormExtensionsBundle\Form\Type\MoneyType;
17+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2ChoiceType;
18+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2CountryType;
19+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2DocumentType;
20+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2EntityType;
21+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2HiddenType;
22+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2LanguageType;
23+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2LocaleType;
24+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2ModelType;
25+
use Admingenerator\FormExtensionsBundle\Form\Type\Select2TimezoneType;
26+
use Admingenerator\FormExtensionsBundle\Form\Type\SingleUploadType;
27+
use Admingenerator\FormExtensionsBundle\Form\Type\TimePickerType;
28+
use Admingenerator\FormExtensionsBundle\Form\Type\UploadCollectionType;
29+
use Admingenerator\FormExtensionsBundle\Storage\LocalFileStorage;
30+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
31+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
32+
33+
return static function (ContainerConfigurator $container): void {
34+
$container->parameters()->set('admingenerator.form.upload_collection_listener.class', UploadCollectionListener::class);
35+
36+
$services = $container->services();
37+
$configureFormType = static fn(string $id, string $class) => $services->set($id, $class)->tag('form.type');
38+
$configureFormType('admingenerator.form.extensions.type.bootstrap_table_collection', BootstrapTableCollectionType::class);
39+
$configureFormType('admingenerator.form.extensions.type.bootstrap_fieldset_collection', BootstrapFieldsetCollectionType::class);
40+
$configureFormType('admingenerator.form.extensions.type.bootstrap_money', MoneyType::class);
41+
$configureFormType('admingenerator.form.extensions.type.upload_collection', UploadCollectionType::class);
42+
$configureFormType('admingenerator.form.extensions.type.datetime_picker', DateTimePickerType::class);
43+
$configureFormType('admingenerator.form.extensions.type.daterange_picker', DateRangePickerType::class)
44+
->call('setTranslator', [service('translator')]);
45+
$configureFormType('admingenerator.form.extensions.type.date_picker', DatePickerType::class);
46+
$configureFormType('admingenerator.form.extensions.type.double_list_entity', DoubleListEntityType::class);
47+
$configureFormType('admingenerator.form.extensions.type.double_list_document', DoubleListDocumentType::class);
48+
$configureFormType('admingenerator.form.extensions.type.double_list_model', DoubleListModelType::class);
49+
$configureFormType('admingenerator.form.extensions.type.elastic_textarea', ElasticTextareaType::class);
50+
$configureFormType('admingenerator.form.extensions.type.google_map', GoogleMapType::class);
51+
$configureFormType('admingenerator.form.extensions.type.knob', KnobType::class);
52+
$configureFormType('admingenerator.form.extensions.type.mini_colors', MiniColorsType::class);
53+
$configureFormType('admingenerator.form.extensions.type.select2_entity', Select2EntityType::class);
54+
$configureFormType('admingenerator.form.extensions.type.select2_document', Select2DocumentType::class);
55+
$configureFormType('admingenerator.form.extensions.type.select2_model', Select2ModelType::class);
56+
$configureFormType('admingenerator.form.extensions.type.select2_locale', Select2LocaleType::class);
57+
$configureFormType('admingenerator.form.extensions.type.select2_language', Select2LanguageType::class);
58+
$configureFormType('admingenerator.form.extensions.type.select2_country', Select2CountryType::class);
59+
$configureFormType('admingenerator.form.extensions.type.select2_timezone', Select2TimezoneType::class);
60+
$configureFormType('admingenerator.form.extensions.type.select2_choice', Select2ChoiceType::class);
61+
$configureFormType('admingenerator.form.extensions.type.single_upload', SingleUploadType::class);
62+
$configureFormType('admingenerator.form.extensions.type.time_picker', TimePickerType::class);
63+
$configureFormType('admingenerator.form.extensions.type.select2_hidden', Select2HiddenType::class);
64+
65+
$services->set('admingenerator.form.file_storage.local', LocalFileStorage::class)
66+
->arg('$requestStack', service('request_stack'));
67+
};

Resources/config/services.xml

Lines changed: 0 additions & 122 deletions
This file was deleted.

Twig/Extension/ImageAssetsExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function getFilters(): array
4242
/**
4343
* Gets the browser path for the image and filter to apply.
4444
*
45-
* @return string The public path.
45+
* @return string|null The public path.
4646
*/
4747
public function asset(object $object, string $field): ?string
4848
{

Validator/Constraints/LatLngValidator.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,17 @@
88

99
class LatLngValidator extends ConstraintValidator
1010
{
11-
public function validate($value, Constraint $constraint): bool
11+
public function validate($value, Constraint $constraint): void
1212
{
1313
if (!($constraint instanceof LatLng)) {
1414
throw new InvalidArgumentException(sprintf('Expected %s, got %s', LatLng::class, $constraint::class));
1515
}
1616
if (!preg_match('/^[0-9\-\.]+$/', $value['lat'], $matches) || !preg_match('/^[0-9\-\.]+$/', $value['lng'], $matches)) {
1717
$this->context->addViolation($constraint->message, ['%lat%' => (float)$value['lat'], '%lng%' => (float)$value['lng']]);
18-
return false;
18+
return;
1919
}
2020
if ($value['lat'] > 90 || $value['lat'] < -90 || $value['lng'] > 180 || $value['lng'] < -180) {
2121
$this->context->addViolation($constraint->message, ['%lat%' => (float)$value['lat'], '%lng%' => (float)$value['lng']]);
22-
return false;
2322
}
24-
return true;
2523
}
2624
}

composer.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616
],
1717
"require": {
1818
"php": ">=8.1.0",
19-
"symfony/config": "~4.4|~5.4|~6.2",
20-
"symfony/dependency-injection": "~4.4|~5.4|~6.2",
21-
"symfony/event-dispatcher": "~4.4|~5.4|~6.2",
22-
"symfony/form": "~4.4|~5.4|~6.2",
23-
"symfony/http-foundation": "~4.4|~5.4|~6.2",
24-
"symfony/http-kernel": "~4.4|~5.4|~6.2",
25-
"symfony/options-resolver": "~4.4|~5.4|~6.2",
26-
"symfony/property-access": "~4.4|~5.4|~6.2",
27-
"symfony/translation": "~4.4|~5.4|~6.2",
19+
"symfony/config": "~5.4|~6.4|~7.4|~8.0",
20+
"symfony/dependency-injection": "~5.4|~6.4|~7.4|~8.0",
21+
"symfony/event-dispatcher": "~5.4|~6.4|~7.4|~8.0",
22+
"symfony/form": "~5.4|~6.4|~7.4|~8.0",
23+
"symfony/http-foundation": "~5.4|~6.4|~7.4|~8.0",
24+
"symfony/http-kernel": "~5.4|~6.4|~7.4|~8.0",
25+
"symfony/options-resolver": "~5.4|~6.4|~7.4|~8.0",
26+
"symfony/property-access": "~5.4|~6.4|~7.4|~8.0",
27+
"symfony/translation": "~5.4|~6.4|~7.4|~8.0",
2828
"symfony/translation-contracts": "~1.0|~2.0|~3.0",
29-
"symfony/twig-bridge": "~4.4|~5.4|~6.2",
30-
"symfony/validator": "~4.4|~5.4|~6.2",
31-
"twig/twig": "^2.15.3||^3.4.3",
29+
"symfony/twig-bridge": "~5.4|~6.4|~7.4|~8.0",
30+
"symfony/validator": "~5.4|~6.4|~7.4|~8.0",
31+
"twig/twig": "^3.4.3",
3232
"symfony2admingenerator/form-bundle": "~1.7|~2.0"
3333
},
3434
"suggest": {

0 commit comments

Comments
 (0)