diff --git a/doc/installation.md b/doc/installation.md index 87cb742..8b7ddab 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -3,7 +3,7 @@ ## Installation ```bash -$ composer require bitbag/mailtemplate-plugin +$ composer require bitbag/mailtemplate-plugin --no-scripts ``` 1. Add plugin dependencies to your `config/bundles.php` file: @@ -34,9 +34,10 @@ bitbag_sylius_mail_template_plugin: resource: "@BitBagSyliusMailTemplatePlugin/Resources/config/routing.yaml" ``` -4. Update your database +4. Update your database and clear cache ``` +$ bin/console cache:clear $ bin/console doctrine:migrations:migrate ``` diff --git a/src/DependencyInjection/BitBagSyliusMailTemplateExtension.php b/src/DependencyInjection/BitBagSyliusMailTemplateExtension.php index 5ef9ed3..0f511d4 100644 --- a/src/DependencyInjection/BitBagSyliusMailTemplateExtension.php +++ b/src/DependencyInjection/BitBagSyliusMailTemplateExtension.php @@ -15,9 +15,10 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; +use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; -final class BitBagSyliusMailTemplateExtension extends Extension +final class BitBagSyliusMailTemplateExtension extends Extension implements PrependExtensionInterface { public const ALLOWED_FILTERS_PARAMETER = 'bitbag_sylius_mail_template_plugin.mail_template.twig.allowed_filters'; @@ -71,4 +72,36 @@ public function getConfiguration(array $config, ContainerBuilder $container): Co { return new Configuration(); } + + public function prepend(ContainerBuilder $container): void + { + if (!$container->hasExtension('doctrine_migrations') || !$container->hasExtension('sylius_labs_doctrine_migrations_extra')) { + return; + } + + if ( + $container->hasParameter('sylius_core.prepend_doctrine_migrations') && + false === $container->getParameter('sylius_core.prepend_doctrine_migrations') + ) { + return; + } + + /** @var array $doctrineConfig */ + $doctrineConfig = $container->getExtensionConfig('doctrine_migrations'); + $migrationsPath = (array) \array_pop($doctrineConfig)['migrations_paths']; + $container->prependExtensionConfig('doctrine_migrations', [ + 'migrations_paths' => \array_merge( + $migrationsPath, + [ + 'BitBag\SyliusMailTemplatePlugin\Migrations' => '@BitBagSyliusMailTemplatePlugin/Migrations', + ], + ), + ]); + + $container->prependExtensionConfig('sylius_labs_doctrine_migrations_extra', [ + 'migrations' => [ + 'BitBag\SyliusMailTemplatePlugin\Migrations' => ['Sylius\Bundle\CoreBundle\Migrations'], + ], + ]); + } } diff --git a/tests/Application/config/packages/doctrine_migrations.yaml b/tests/Application/config/packages/doctrine_migrations.yaml index cdbc01a..08e83b8 100644 --- a/tests/Application/config/packages/doctrine_migrations.yaml +++ b/tests/Application/config/packages/doctrine_migrations.yaml @@ -2,3 +2,5 @@ doctrine_migrations: storage: table_storage: table_name: sylius_migrations + migrations_paths: + 'App\Migrations': '%kernel.project_dir%/src/Migrations/' diff --git a/tests/Application/src/Migrations/.gitkeep b/tests/Application/src/Migrations/.gitkeep new file mode 100644 index 0000000..e69de29