diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 226f6a0..7fd6107 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -21,7 +21,7 @@ jobs:
- name: 'Setup PHP'
uses: shivammathur/setup-php@v2
with:
- php-version: '8.3'
+ php-version: '8.5'
- name: 'Install dependencies'
run: |
@@ -42,37 +42,31 @@ jobs:
matrix:
include:
# Lowest deps
- - name: 'Test lowest deps Symfony 5.4 [Linux, PHP 7.4]'
+ - name: 'Test lowest deps Symfony 6.4 [Linux, PHP 8.2]'
os: 'ubuntu-latest'
- php: '7.4'
- symfony: '5.4.*@dev'
+ php: '8.2'
+ symfony: '6.4.*'
composer-flags: '--prefer-lowest'
- allow-unstable: true
+ allow-unstable: false
# Most recent versions
- - name: 'Test Symfony 5.4 [Linux, PHP 8.0]'
- os: 'ubuntu-latest'
- php: '8.0'
- symfony: '5.4.*@dev'
- allow-unstable: true
-
- - name: 'Test Symfony 6.0 [Linux, PHP 8.1]'
+ - name: 'Test Symfony 7.4 [Linux, PHP 8.2]'
os: 'ubuntu-latest'
- php: '8.1'
- symfony: '6.0.*@dev'
- allow-unstable: true
+ php: '8.2'
+ symfony: '7.4.*'
+ allow-unstable: false
- - name: 'Test next Symfony 6.4 [Linux, PHP 8.2]'
+ - name: 'Test Symfony 8.1 [Linux, PHP 8.5]'
os: 'ubuntu-latest'
- php: '8.2'
- symfony: '6.4.*@dev'
- allow-unstable: true
+ php: '8.5'
+ symfony: '8.1.*'
+ allow-unstable: false
# Bleeding edge (unreleased dev versions where failures are allowed)
- - name: 'Test next Symfony [Linux, PHP 8.3] (allowed failure)'
+ - name: 'Test next Symfony [Linux, PHP 8.5] (allowed failure)'
os: 'ubuntu-latest'
- php: '8.3'
- symfony: '7.0.*@dev'
+ php: '8.5'
+ symfony: '8@dev'
composer-flags: '--ignore-platform-req php'
allow-unstable: true
allow-failure: true
@@ -99,7 +93,7 @@ jobs:
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: 'Cache dependencies'
- uses: actions/cache@v2
+ uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-php-${{ matrix.php }}-symfony-${{ matrix.symfony }}-${{ hashFiles('**/composer.json') }}-flags-${{ matrix.composer-flags }}
diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php
index 2b834e8..2c6ac7f 100644
--- a/.php-cs-fixer.php
+++ b/.php-cs-fixer.php
@@ -33,6 +33,6 @@
'single_line_throw' => false,
'simplified_null_return' => false,
'void_return' => true,
- 'yoda_style' => [],
+ 'yoda_style' => ['equal' => false, 'identical' => false, 'less_and_greater' => false],
])
;
diff --git a/README.md b/README.md
index b9c3a02..6a410d7 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,7 @@
ElaoFormTranslationBundle
=========================
-
-[](http://travis-ci.org/Elao/ElaoFormTranslationBundle)
+[](https://github.com/Elao/ElaoFormTranslationBundle/actions/workflows/ci.yaml)
Description:
--------------
@@ -39,11 +38,13 @@ _Note: The keys will only be generated at runtime and won't be dumped when you u
Installation:
--------------
+This bundle supports maintained Symfony versions only.
+
Add ElaoFormTranslationBundle to your composer.json:
``` json
{
"require": {
- "elao/form-translation-bundle": "3.*"
+ "elao/form-translation-bundle": "4.*"
}
}
```
@@ -54,19 +55,6 @@ Now download the bundle by running the command:
$ php composer.phar update elao/form-translation-bundle
```
-Register the bundle in the kernel:
-
-``` php
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Resources/config/services.xml b/Resources/config/services.xml
deleted file mode 100644
index 36edf92..0000000
--- a/Resources/config/services.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/Resources/doc/index.rst b/Resources/doc/index.rst
deleted file mode 100644
index e69de29..0000000
diff --git a/Resources/meta/LICENSE b/Resources/meta/LICENSE
deleted file mode 100644
index e69de29..0000000
diff --git a/composer.json b/composer.json
index e81694e..a2d1392 100644
--- a/composer.json
+++ b/composer.json
@@ -16,23 +16,28 @@
}
],
"require": {
- "php": "^7.4|^8.0",
- "symfony/framework-bundle": "^5.4|^6.0|^7.0",
- "symfony/form": "^5.4|^6.0|^7.0",
- "symfony/property-access": "^5.4|^6.0|^7.0"
+ "php": "^8.2",
+ "symfony/framework-bundle": "^6.4|^7.4|^8.0",
+ "symfony/form": "^6.4|^7.4|^8.0",
+ "symfony/property-access": "^6.4|^7.4|^8.0"
},
"require-dev": {
- "ekino/phpstan-banned-code": "^1.0",
+ "ekino/phpstan-banned-code": "^3.2",
"friendsofphp/php-cs-fixer": "^3.10",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-symfony": "^1.2",
- "symfony/phpunit-bridge": "^5.0",
- "phpstan/phpstan-phpunit": "^1.1"
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan": "^2.2",
+ "phpstan/phpstan-symfony": "^2.0",
+ "symfony/phpunit-bridge": "^6.0",
+ "phpstan/phpstan-phpunit": "^2.0"
},
"autoload": {
"psr-4": {
- "Elao\\Bundle\\FormTranslationBundle\\": "."
+ "Elao\\Bundle\\FormTranslationBundle\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Elao\\Bundle\\FormTranslationBundle\\Tests\\": "tests/"
}
},
"prefer-stable": true,
diff --git a/config/forms.php b/config/forms.php
new file mode 100644
index 0000000..54e3243
--- /dev/null
+++ b/config/forms.php
@@ -0,0 +1,42 @@
+
+ */
+
+use Elao\Bundle\FormTranslationBundle\Form\Extension\ButtonTypeExtension;
+use Elao\Bundle\FormTranslationBundle\Form\Extension\ChoiceTypeExtension;
+use Elao\Bundle\FormTranslationBundle\Form\Extension\CollectionTypeExtension;
+use Elao\Bundle\FormTranslationBundle\Form\Extension\FormTypeExtension;
+use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
+use Symfony\Component\Form\Extension\Core\Type\ButtonType;
+use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
+use Symfony\Component\Form\Extension\Core\Type\CollectionType;
+use Symfony\Component\Form\Extension\Core\Type\FormType;
+
+return static function (ContainerConfigurator $container): void {
+ $services = $container->services();
+
+ $services->set('elao.form_translation.extension.tree_aware_extension')
+ ->abstract();
+
+ $services->set('elao.form_translation.extension.form_type_extension', FormTypeExtension::class)
+ ->parent('elao.form_translation.extension.tree_aware_extension')
+ ->tag('form.type_extension', ['extended-type' => FormType::class]);
+
+ $services->set('elao.form_translation.extension.collection_type_extension', CollectionTypeExtension::class)
+ ->parent('elao.form_translation.extension.tree_aware_extension')
+ ->tag('form.type_extension', ['extended-type' => CollectionType::class]);
+
+ $services->set('elao.form_translation.extension.button_type_extension', ButtonTypeExtension::class)
+ ->parent('elao.form_translation.extension.tree_aware_extension')
+ ->tag('form.type_extension', ['extended-type' => ButtonType::class]);
+
+ $services->set('elao.form_translation.extension.choice_type_extension', ChoiceTypeExtension::class)
+ ->parent('elao.form_translation.extension.tree_aware_extension')
+ ->tag('form.type_extension', ['extended-type' => ChoiceType::class]);
+};
diff --git a/config/services.php b/config/services.php
new file mode 100644
index 0000000..63323bf
--- /dev/null
+++ b/config/services.php
@@ -0,0 +1,21 @@
+
+ */
+
+use Elao\Bundle\FormTranslationBundle\Builders\FormKeyBuilder;
+use Elao\Bundle\FormTranslationBundle\Builders\FormTreeBuilder;
+use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
+
+return static function (ContainerConfigurator $container): void {
+ $services = $container->services();
+
+ $services->set('elao.form_translation.tree_builder', FormTreeBuilder::class);
+
+ $services->set('elao.form_translation.key_builder', FormKeyBuilder::class);
+};
diff --git a/phpstan.neon.dist b/phpstan.neon.dist
index 4af2a3b..d9c584f 100644
--- a/phpstan.neon.dist
+++ b/phpstan.neon.dist
@@ -2,7 +2,7 @@ parameters:
level: 8
paths:
- - "./"
+ - "src/"
excludePaths:
- "vendor"
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index ce23af4..46f89c5 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -15,7 +15,7 @@
- ./Tests/
+ tests
diff --git a/Builders/FormKeyBuilder.php b/src/Builders/FormKeyBuilder.php
similarity index 98%
rename from Builders/FormKeyBuilder.php
rename to src/Builders/FormKeyBuilder.php
index 0faf804..c9c0e60 100644
--- a/Builders/FormKeyBuilder.php
+++ b/src/Builders/FormKeyBuilder.php
@@ -51,7 +51,7 @@ public function __construct(
string $separator = '.',
string $root = 'form',
string $children = 'children',
- string $prototype = 'prototype'
+ string $prototype = 'prototype',
) {
$this->separator = $separator;
$this->root = $root;
diff --git a/Builders/FormTreeBuilder.php b/src/Builders/FormTreeBuilder.php
similarity index 100%
rename from Builders/FormTreeBuilder.php
rename to src/Builders/FormTreeBuilder.php
diff --git a/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php
similarity index 100%
rename from DependencyInjection/Configuration.php
rename to src/DependencyInjection/Configuration.php
diff --git a/DependencyInjection/ElaoFormTranslationExtension.php b/src/DependencyInjection/ElaoFormTranslationExtension.php
similarity index 92%
rename from DependencyInjection/ElaoFormTranslationExtension.php
rename to src/DependencyInjection/ElaoFormTranslationExtension.php
index 6476a71..a037154 100644
--- a/DependencyInjection/ElaoFormTranslationExtension.php
+++ b/src/DependencyInjection/ElaoFormTranslationExtension.php
@@ -13,9 +13,9 @@
use Symfony\Component\Config\FileLocator;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\DependencyInjection\Extension;
/**
* ElaoFormTranslation extension
@@ -30,10 +30,10 @@ public function load(array $configs, ContainerBuilder $container): void
$config = $this->processConfiguration($configuration, $configs);
if ($config['enabled']) {
- $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
+ $loader = new Loader\PhpFileLoader($container, new FileLocator(dirname(__DIR__, 2) . '/config'));
- $loader->load('services.xml');
- $loader->load('forms.xml');
+ $loader->load('services.php');
+ $loader->load('forms.php');
$this->loadTreeConfig($container, $loader, $config);
}
diff --git a/ElaoFormTranslationBundle.php b/src/ElaoFormTranslationBundle.php
similarity index 100%
rename from ElaoFormTranslationBundle.php
rename to src/ElaoFormTranslationBundle.php
diff --git a/Form/Extension/ButtonTypeExtension.php b/src/Form/Extension/ButtonTypeExtension.php
similarity index 100%
rename from Form/Extension/ButtonTypeExtension.php
rename to src/Form/Extension/ButtonTypeExtension.php
diff --git a/Form/Extension/ChoiceTypeExtension.php b/src/Form/Extension/ChoiceTypeExtension.php
similarity index 100%
rename from Form/Extension/ChoiceTypeExtension.php
rename to src/Form/Extension/ChoiceTypeExtension.php
diff --git a/Form/Extension/CollectionTypeExtension.php b/src/Form/Extension/CollectionTypeExtension.php
similarity index 100%
rename from Form/Extension/CollectionTypeExtension.php
rename to src/Form/Extension/CollectionTypeExtension.php
diff --git a/Form/Extension/FormTypeExtension.php b/src/Form/Extension/FormTypeExtension.php
similarity index 100%
rename from Form/Extension/FormTypeExtension.php
rename to src/Form/Extension/FormTypeExtension.php
diff --git a/Form/Extension/TreeAwareExtension.php b/src/Form/Extension/TreeAwareExtension.php
similarity index 98%
rename from Form/Extension/TreeAwareExtension.php
rename to src/Form/Extension/TreeAwareExtension.php
index bf536bf..f2620a7 100644
--- a/Form/Extension/TreeAwareExtension.php
+++ b/src/Form/Extension/TreeAwareExtension.php
@@ -133,6 +133,8 @@ protected function generateKey(FormView &$view, $key, $value): void
/**
* @param array &$vars
+ *
+ * @param-out array $vars
*/
protected function setVar(array &$vars, string $key, mixed $value): void
{
diff --git a/Model/FormTree.php b/src/Model/FormTree.php
similarity index 100%
rename from Model/FormTree.php
rename to src/Model/FormTree.php
diff --git a/Model/FormTreeNode.php b/src/Model/FormTreeNode.php
similarity index 100%
rename from Model/FormTreeNode.php
rename to src/Model/FormTreeNode.php
diff --git a/Tests/Builders/FormKeyBuilderTest.php b/tests/Builders/FormKeyBuilderTest.php
similarity index 100%
rename from Tests/Builders/FormKeyBuilderTest.php
rename to tests/Builders/FormKeyBuilderTest.php
diff --git a/Tests/Builders/FormTreeBuilderTest.php b/tests/Builders/FormTreeBuilderTest.php
similarity index 100%
rename from Tests/Builders/FormTreeBuilderTest.php
rename to tests/Builders/FormTreeBuilderTest.php
diff --git a/Tests/FormTranslationTestCase.php b/tests/FormTranslationTestCase.php
similarity index 61%
rename from Tests/FormTranslationTestCase.php
rename to tests/FormTranslationTestCase.php
index 67087a0..30d898c 100644
--- a/Tests/FormTranslationTestCase.php
+++ b/tests/FormTranslationTestCase.php
@@ -11,6 +11,10 @@
namespace Elao\Bundle\FormTranslationBundle\Tests;
use Elao\Bundle\FormTranslationBundle\Form\Extension;
+use Elao\Bundle\FormTranslationBundle\Form\Extension\ButtonTypeExtension;
+use Elao\Bundle\FormTranslationBundle\Form\Extension\ChoiceTypeExtension;
+use Elao\Bundle\FormTranslationBundle\Form\Extension\CollectionTypeExtension;
+use Elao\Bundle\FormTranslationBundle\Form\Extension\FormTypeExtension;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\Form\Forms;
@@ -30,15 +34,15 @@ protected function setUp(): void
/**
* Get Form Type Extensions
*
- * @return array
+ * @return array>
*/
protected function getTypeExtensions(): array
{
return [
- new Extension\ButtonTypeExtension(),
- new Extension\ChoiceTypeExtension(),
- new Extension\CollectionTypeExtension(),
- new Extension\FormTypeExtension(),
+ new ButtonTypeExtension(),
+ new ChoiceTypeExtension(),
+ new CollectionTypeExtension(),
+ new FormTypeExtension(),
];
}
}