Skip to content

Commit 1fcb41f

Browse files
committed
feature #1135 Add Symfony 7 Support (JoppeDC)
This PR was squashed before being merged into the 2.x branch. Discussion ---------- Add Symfony 7 Support | Q | A | ------------- | --- | Bug fix? | no | New feature? | no | License | MIT Update packages to allow Symfony 7 ## Changes done by this PR: - Update the tests matrix - - Test php 8.1 with lowest deps - - Test php 8.2 with highest deps - Update a small number of classes to comply with updated interfaces (add return types) - No longer support Symfony 5 and <=6.2 for the Autocomplete Bundle due to BC's in the Security bundle - Update all composer deps to add Symfony 7.x support Commits ------- 4bccd48 Add Symfony 7 Support
2 parents 2879dfa + 4bccd48 commit 1fcb41f

34 files changed

+184
-179
lines changed

.github/workflows/test-turbo.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,12 @@ jobs:
3434
strategy:
3535
fail-fast: false
3636
matrix:
37-
php-version: ['8.1']
38-
dependency-version: ['lowest', 'highest']
37+
php-version: ['8.1', '8.2']
38+
include:
39+
- php-version: '8.1'
40+
dependency-version: 'lowest'
41+
- php-version: '8.2'
42+
dependency-version: 'highest'
3943

4044
services:
4145
mercure:

.github/workflows/test.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,12 @@ jobs:
8686
strategy:
8787
fail-fast: false
8888
matrix:
89-
php-version: ['8.1']
90-
dependency-version: ['lowest', 'highest']
89+
php-version: ['8.1', '8.2']
90+
include:
91+
- php-version: '8.1'
92+
dependency-version: 'lowest'
93+
- php-version: '8.2'
94+
dependency-version: 'highest'
9195
component: ${{ fromJson(needs.tests-php-components.outputs.components )}}
9296
exclude:
9397
- component: Swup # has no tests

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"dev"
66
],
77
"require-dev": {
8-
"symfony/filesystem": "^5.2|^6.0",
9-
"symfony/finder": "^5.4|^6.0",
8+
"symfony/filesystem": "^5.2|^6.0|^7.0",
9+
"symfony/finder": "^5.4|^6.0|^7.0",
1010
"php-cs-fixer/shim": "^3.13"
1111
}
1212
}

src/Autocomplete/composer.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,28 @@
2525
},
2626
"require": {
2727
"php": ">=8.1",
28-
"symfony/dependency-injection": "^5.4|^6.0",
29-
"symfony/http-foundation": "^5.4|^6.0",
30-
"symfony/http-kernel": "^5.4|^6.0",
31-
"symfony/property-access": "^5.4|^6.0",
32-
"symfony/string": "^5.4|^6.0"
28+
"symfony/dependency-injection": "^6.3|^7.0",
29+
"symfony/http-foundation": "^6.3|^7.0",
30+
"symfony/http-kernel": "^6.3|^7.0",
31+
"symfony/property-access": "^6.3|^7.0",
32+
"symfony/string": "^6.3|^7.0"
3333
},
3434
"require-dev": {
3535
"doctrine/collections": "^1.6.8|^2.0",
3636
"doctrine/doctrine-bundle": "^2.4.3",
3737
"doctrine/orm": "^2.9.4",
3838
"fakerphp/faker": "^1.22",
3939
"mtdowling/jmespath.php": "^2.6",
40-
"symfony/form": "^5.4|^6.0",
41-
"symfony/options-resolver": "^5.4|^6.0",
42-
"symfony/framework-bundle": "^5.4|^6.0",
40+
"symfony/form": "^6.3|^7.0",
41+
"symfony/options-resolver": "^6.3|^7.0",
42+
"symfony/framework-bundle": "^6.3|^7.0",
4343
"symfony/maker-bundle": "^1.40",
44-
"symfony/phpunit-bridge": "^5.4|^6.0",
45-
"symfony/process": "^5.4|^6.0",
46-
"symfony/security-bundle": "^5.4|^6.0",
47-
"symfony/security-csrf": "^5.4|^6.0",
48-
"symfony/twig-bundle": "^5.4|^6.0",
49-
"symfony/uid": "^5.4|^6.0",
44+
"symfony/phpunit-bridge": "^6.3|^7.0",
45+
"symfony/process": "^6.3|^7.0",
46+
"symfony/security-bundle": "^6.3|^7.0",
47+
"symfony/security-csrf": "^6.3|^7.0",
48+
"symfony/twig-bundle": "^6.3|^7.0",
49+
"symfony/uid": "^6.3|^7.0",
5050
"twig/twig": "^2.14.7|^3.0.4",
5151
"zenstruck/browser": "^1.1",
5252
"zenstruck/foundry": "^1.33"

src/Autocomplete/doc/index.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ Or, create the field by hand::
101101
// src/Form/FoodAutocompleteField.php
102102
// ...
103103

104-
use Symfony\Component\Security\Core\Security;
104+
use Symfony\Bundle\SecurityBundle\Security;
105105
use Symfony\UX\Autocomplete\Form\AsEntityAutocompleteField;
106106
use Symfony\UX\Autocomplete\Form\ParentEntityAutocompleteType;
107107

@@ -231,7 +231,7 @@ to the options above, you can also pass:
231231
that should be required to access the endpoint. Or, pass a callback and
232232
return ``true`` to grant access or ``false`` to deny access::
233233

234-
use Symfony\Component\Security\Core\Security;
234+
use Symfony\Bundle\SecurityBundle\Security;
235235

236236
[
237237
'security' => function(Security $security): bool {
@@ -418,8 +418,8 @@ and tag this service with ``ux.entity_autocompleter``, including an ``alias`` op
418418
use App\Entity\Food;
419419
use Doctrine\ORM\EntityRepository;
420420
use Doctrine\ORM\QueryBuilder;
421+
use Symfony\Bundle\SecurityBundle\Security;
421422
use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
422-
use Symfony\Component\Security\Core\Security;
423423
use Symfony\UX\Autocomplete\EntityAutocompleterInterface;
424424

425425
#[AutoconfigureTag('ux.entity_autocompleter', ['alias' => 'food'])]

src/Autocomplete/src/AutocompleteResultsExecutor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
namespace Symfony\UX\Autocomplete;
1313

1414
use Doctrine\ORM\Tools\Pagination\Paginator;
15+
use Symfony\Bundle\SecurityBundle\Security;
1516
use Symfony\Component\PropertyAccess\Exception\UnexpectedTypeException;
1617
use Symfony\Component\PropertyAccess\PropertyAccessor;
1718
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
1819
use Symfony\Component\PropertyAccess\PropertyPath;
1920
use Symfony\Component\PropertyAccess\PropertyPathInterface;
2021
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
21-
use Symfony\Component\Security\Core\Security;
2222
use Symfony\UX\Autocomplete\Doctrine\DoctrineRegistryWrapper;
2323

2424
/**

src/Autocomplete/src/EntityAutocompleterInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
use Doctrine\ORM\EntityRepository;
1515
use Doctrine\ORM\QueryBuilder;
16-
use Symfony\Component\Security\Core\Security;
16+
use Symfony\Bundle\SecurityBundle\Security;
1717

1818
/**
1919
* Interface for classes that will have an "autocomplete" endpoint exposed.

src/Autocomplete/src/Form/ParentEntityAutocompleteType.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public function configureOptions(OptionsResolver $resolver)
7878
// }
7979
'filter_query' => null,
8080
// set to the string role that's required to view the autocomplete results
81-
// or a callable: function(Symfony\Component\Security\Core\Security $security): bool
81+
// or a callable: function(Symfony\Bundle\SecurityBundle\Security $security): bool
8282
'security' => false,
8383
// set the max results number that a query on automatic endpoint return.
8484
'max_results' => 10,
@@ -102,13 +102,13 @@ public function getBlockPrefix(): string
102102
return 'ux_entity_autocomplete';
103103
}
104104

105-
public function mapDataToForms($data, $forms)
105+
public function mapDataToForms($data, $forms): void
106106
{
107107
$form = current(iterator_to_array($forms, false));
108108
$form->setData($data);
109109
}
110110

111-
public function mapFormsToData($forms, &$data)
111+
public function mapFormsToData($forms, &$data): void
112112
{
113113
$form = current(iterator_to_array($forms, false));
114114
$data = $form->getData();

src/Autocomplete/src/Form/WrappedEntityTypeAutocompleter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
use Doctrine\ORM\EntityRepository;
66
use Doctrine\ORM\QueryBuilder;
7+
use Symfony\Bundle\SecurityBundle\Security;
78
use Symfony\Component\Form\ChoiceList\Factory\Cache\ChoiceLabel;
89
use Symfony\Component\Form\FormFactoryInterface;
910
use Symfony\Component\Form\FormInterface;
1011
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
1112
use Symfony\Component\PropertyAccess\PropertyPathInterface;
12-
use Symfony\Component\Security\Core\Security;
1313
use Symfony\UX\Autocomplete\Doctrine\EntityMetadata;
1414
use Symfony\UX\Autocomplete\Doctrine\EntityMetadataFactory;
1515
use Symfony\UX\Autocomplete\Doctrine\EntitySearchUtil;

src/Autocomplete/tests/Fixtures/Autocompleter/CustomGroupByProductAutocompleter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Doctrine\ORM\EntityRepository;
66
use Doctrine\ORM\QueryBuilder;
77
use Symfony\Component\HttpFoundation\RequestStack;
8-
use Symfony\Component\Security\Core\Security;
8+
use Symfony\Bundle\SecurityBundle\Security;
99
use Symfony\UX\Autocomplete\Doctrine\EntitySearchUtil;
1010
use Symfony\UX\Autocomplete\EntityAutocompleterInterface;
1111
use Symfony\UX\Autocomplete\Tests\Fixtures\Entity\Product;

src/Autocomplete/tests/Fixtures/Autocompleter/CustomProductAutocompleter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Doctrine\ORM\EntityRepository;
66
use Doctrine\ORM\QueryBuilder;
77
use Symfony\Component\HttpFoundation\RequestStack;
8-
use Symfony\Component\Security\Core\Security;
8+
use Symfony\Bundle\SecurityBundle\Security;
99
use Symfony\UX\Autocomplete\Doctrine\EntitySearchUtil;
1010
use Symfony\UX\Autocomplete\EntityAutocompleterInterface;
1111
use Symfony\UX\Autocomplete\Tests\Fixtures\Entity\Product;

src/Autocomplete/tests/Fixtures/Form/CategoryAutocompleteType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Symfony\Component\Form\AbstractType;
88
use Symfony\Component\HttpFoundation\RequestStack;
99
use Symfony\Component\OptionsResolver\OptionsResolver;
10-
use Symfony\Component\Security\Core\Security;
10+
use Symfony\Bundle\SecurityBundle\Security;
1111
use Symfony\UX\Autocomplete\Form\AsEntityAutocompleteField;
1212
use Symfony\UX\Autocomplete\Form\ParentEntityAutocompleteType;
1313

src/Autocomplete/tests/Fixtures/Form/CategoryNoChoiceLabelAutocompleteType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Symfony\Component\Form\AbstractType;
88
use Symfony\Component\HttpFoundation\RequestStack;
99
use Symfony\Component\OptionsResolver\OptionsResolver;
10-
use Symfony\Component\Security\Core\Security;
10+
use Symfony\Bundle\SecurityBundle\Security;
1111
use Symfony\UX\Autocomplete\Form\AsEntityAutocompleteField;
1212
use Symfony\UX\Autocomplete\Form\ParentEntityAutocompleteType;
1313

src/Autocomplete/tests/Fixtures/Kernel.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public function testForm(FormFactoryInterface $formFactory, Environment $twig, R
5454
$form->handleRequest($request);
5555

5656
return new Response($twig->render('form.html.twig', [
57-
'form' => $form->createView()
57+
'form' => $form->createView(),
5858
]));
5959
}
6060

@@ -118,18 +118,17 @@ protected function configureContainer(ContainerConfigurator $c): void
118118
]);
119119

120120
$c->extension('security', [
121-
'enable_authenticator_manager' => true,
122121
'password_hashers' => [
123-
PasswordAuthenticatedUserInterface::class => 'plaintext'
122+
PasswordAuthenticatedUserInterface::class => 'plaintext',
124123
],
125124
'providers' => [
126125
'users_in_memory' => [
127126
'memory' => [
128127
'users' => [
129-
'mr_autocompleter' => ['password' => 'symfonypass', 'roles' => ['ROLE_USER']]
128+
'mr_autocompleter' => ['password' => 'symfonypass', 'roles' => ['ROLE_USER']],
130129
],
131130
],
132-
]
131+
],
133132
],
134133
'firewalls' => [
135134
'main' => [
@@ -157,14 +156,14 @@ protected function configureContainer(ContainerConfigurator $c): void
157156
->public()
158157
->arg(1, new Reference('ux.autocomplete.entity_search_util'))
159158
->tag(AutocompleteFormTypePass::ENTITY_AUTOCOMPLETER_TAG, [
160-
'alias' => 'custom_product'
159+
'alias' => 'custom_product',
161160
]);
162161

163162
$services->set(CustomGroupByProductAutocompleter::class)
164163
->public()
165164
->arg(1, new Reference('ux.autocomplete.entity_search_util'))
166165
->tag(AutocompleteFormTypePass::ENTITY_AUTOCOMPLETER_TAG, [
167-
'alias' => 'custom_group_by_product'
166+
'alias' => 'custom_group_by_product',
168167
]);
169168

170169
$services->alias('public.results_executor', 'ux.autocomplete.results_executor')

src/Autocomplete/tests/Unit/AutocompleteResultsExecutorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
namespace Symfony\UX\Autocomplete\Tests\Unit;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Bundle\SecurityBundle\Security;
1516
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
1617
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
17-
use Symfony\Component\Security\Core\Security;
1818
use Symfony\UX\Autocomplete\AutocompleteResultsExecutor;
1919
use Symfony\UX\Autocomplete\Doctrine\DoctrineRegistryWrapper;
2020
use Symfony\UX\Autocomplete\EntityAutocompleterInterface;

src/Chartjs/composer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@
2929
},
3030
"require": {
3131
"php": ">=8.1",
32-
"symfony/config": "^5.4|^6.0",
33-
"symfony/dependency-injection": "^5.4|^6.0",
34-
"symfony/http-kernel": "^5.4|^6.0",
32+
"symfony/config": "^5.4|^6.0|^7.0",
33+
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
34+
"symfony/http-kernel": "^5.4|^6.0|^7.0",
3535
"symfony/stimulus-bundle": "^2.9.1"
3636
},
3737
"require-dev": {
38-
"symfony/framework-bundle": "^5.4|^6.0",
39-
"symfony/phpunit-bridge": "^5.4|^6.0",
40-
"symfony/twig-bundle": "^5.4|^6.0",
41-
"symfony/var-dumper": "^5.4|^6.0"
38+
"symfony/framework-bundle": "^5.4|^6.0|^7.0",
39+
"symfony/phpunit-bridge": "^5.4|^6.0|^7.0",
40+
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
41+
"symfony/var-dumper": "^5.4|^6.0|^7.0"
4242
},
4343
"conflict": {
4444
"symfony/flex": "<1.13"

src/Cropperjs/composer.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,19 @@
3030
"require": {
3131
"php": ">=8.1",
3232
"intervention/image": "^2.5",
33-
"symfony/config": "^5.4|^6.0",
34-
"symfony/dependency-injection": "^5.4|^6.0",
35-
"symfony/form": "^5.4|^6.0",
36-
"symfony/http-kernel": "^5.4|^6.0",
37-
"symfony/options-resolver": "^5.4|^6.0",
38-
"symfony/validator": "^5.4|^6.0"
33+
"symfony/config": "^5.4|^6.0|^7.0",
34+
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
35+
"symfony/form": "^5.4|^6.0|^7.0",
36+
"symfony/http-kernel": "^5.4|^6.0|^7.0",
37+
"symfony/options-resolver": "^5.4|^6.0|^7.0",
38+
"symfony/validator": "^5.4|^6.0|^7.0"
3939
},
4040
"require-dev": {
41-
"symfony/expression-language": "^5.4|^6.0",
42-
"symfony/framework-bundle": "^5.4|^6.0",
43-
"symfony/phpunit-bridge": "^5.4|^6.0",
44-
"symfony/twig-bundle": "^5.4|^6.0",
45-
"symfony/var-dumper": "^5.4|^6.0",
41+
"symfony/expression-language": "^5.4|^6.0|^7.0",
42+
"symfony/framework-bundle": "^5.4|^6.0|^7.0",
43+
"symfony/phpunit-bridge": "^5.4|^6.0|^7.0",
44+
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
45+
"symfony/var-dumper": "^5.4|^6.0|^7.0",
4646
"twig/twig": "^2.14.7|^3.0.4"
4747
},
4848
"conflict": {

src/Dropzone/composer.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@
2929
},
3030
"require": {
3131
"php": ">=8.1",
32-
"symfony/config": "^5.4|^6.0",
33-
"symfony/dependency-injection": "^5.4|^6.0",
34-
"symfony/form": "^5.4|^6.0",
35-
"symfony/http-kernel": "^5.4|^6.0",
36-
"symfony/options-resolver": "^5.4|^6.0"
32+
"symfony/config": "^5.4|^6.0|^7.0",
33+
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
34+
"symfony/form": "^5.4|^6.0|^7.0",
35+
"symfony/http-kernel": "^5.4|^6.0|^7.0",
36+
"symfony/options-resolver": "^5.4|^6.0|^7.0"
3737
},
3838
"require-dev": {
39-
"symfony/framework-bundle": "^5.4|^6.0",
40-
"symfony/phpunit-bridge": "^5.4|^6.0",
41-
"symfony/twig-bundle": "^5.4|^6.0",
42-
"symfony/var-dumper": "^5.4|^6.0",
39+
"symfony/framework-bundle": "^5.4|^6.0|^7.0",
40+
"symfony/phpunit-bridge": "^5.4|^6.0|^7.0",
41+
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
42+
"symfony/var-dumper": "^5.4|^6.0|^7.0",
4343
"twig/twig": "^2.14.7|^3.0.4"
4444
},
4545
"extra": {

src/LazyImage/composer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@
2929
},
3030
"require": {
3131
"php": ">=8.1",
32-
"symfony/config": "^5.4|^6.0",
33-
"symfony/http-kernel": "^5.4|^6.0",
34-
"symfony/dependency-injection": "^5.4|^6.0"
32+
"symfony/config": "^5.4|^6.0|^7.0",
33+
"symfony/http-kernel": "^5.4|^6.0|^7.0",
34+
"symfony/dependency-injection": "^5.4|^6.0|^7.0"
3535
},
3636
"require-dev": {
3737
"intervention/image": "^2.5",
3838
"kornrunner/blurhash": "^1.1",
39-
"symfony/framework-bundle": "^5.4|^6.0",
40-
"symfony/phpunit-bridge": "^5.2|^6.0",
41-
"symfony/twig-bundle": "^5.4|^6.0",
42-
"symfony/var-dumper": "^5.4|^6.0"
39+
"symfony/framework-bundle": "^5.4|^6.0|^7.0",
40+
"symfony/phpunit-bridge": "^5.2|^6.0|^7.0",
41+
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
42+
"symfony/var-dumper": "^5.4|^6.0|^7.0"
4343
},
4444
"extra": {
4545
"thanks": {

0 commit comments

Comments
 (0)