diff --git a/DependencyInjection/Compiler/DriverCompilerPass.php b/DependencyInjection/Compiler/DriverCompilerPass.php
new file mode 100644
index 000000000..e5fade9ba
--- /dev/null
+++ b/DependencyInjection/Compiler/DriverCompilerPass.php
@@ -0,0 +1,37 @@
+getParameter('liip_imagine.driver_service');
+
+ if (!$container->hasDefinition($liipImagineDriver)) {
+ throw new InvalidConfigurationException(sprintf(
+ "Specified driver '%s' is not defined.", $liipImagineDriver
+ ));
+ }
+ }
+}
diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php
index 0bfa4fc4f..082c9990f 100644
--- a/DependencyInjection/Configuration.php
+++ b/DependencyInjection/Configuration.php
@@ -104,14 +104,7 @@ public function getConfigTreeBuilder()
$rootNode
->fixXmlConfig('filter_set', 'filter_sets')
->children()
- ->scalarNode('driver')->defaultValue('gd')
- ->validate()
- ->ifTrue(function ($v) {
- return !in_array($v, ['gd', 'imagick', 'gmagick'], true);
- })
- ->thenInvalid('Invalid imagine driver specified: %s')
- ->end()
- ->end()
+ ->scalarNode('driver')->defaultValue('gd')->end()
->scalarNode('cache')->defaultValue('default')->end()
->scalarNode('cache_base_path')->defaultValue('')->end()
->scalarNode('data_loader')->defaultValue('default')->end()
diff --git a/DependencyInjection/LiipImagineExtension.php b/DependencyInjection/LiipImagineExtension.php
index 365907cd0..c5ada9f2d 100644
--- a/DependencyInjection/LiipImagineExtension.php
+++ b/DependencyInjection/LiipImagineExtension.php
@@ -18,7 +18,6 @@
use Symfony\Component\DependencyInjection\Alias;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
-use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
class LiipImagineExtension extends Extension
@@ -81,9 +80,7 @@ public function load(array $configs, ContainerBuilder $container)
$loader->load('enqueue.xml');
}
- $container->getDefinition('liip_imagine.'.$config['driver'])->addMethodCall('setMetadataReader', [
- new Reference('liip_imagine.meta_data.reader'),
- ]);
+ $container->setParameter('liip_imagine.driver_service', 'liip_imagine.'.$config['driver']);
$container->setAlias('liip_imagine', new Alias('liip_imagine.'.$config['driver']));
$container->setAlias(CacheManager::class, new Alias('liip_imagine.cache.manager', false));
diff --git a/LiipImagineBundle.php b/LiipImagineBundle.php
index 90f56e4ec..44072bdb4 100644
--- a/LiipImagineBundle.php
+++ b/LiipImagineBundle.php
@@ -13,6 +13,7 @@
use Enqueue\Bundle\DependencyInjection\Compiler\AddTopicMetaPass;
use Liip\ImagineBundle\Async\Topics;
+use Liip\ImagineBundle\DependencyInjection\Compiler\DriverCompilerPass;
use Liip\ImagineBundle\DependencyInjection\Compiler\FiltersCompilerPass;
use Liip\ImagineBundle\DependencyInjection\Compiler\LoadersCompilerPass;
use Liip\ImagineBundle\DependencyInjection\Compiler\MetadataReaderCompilerPass;
@@ -38,6 +39,7 @@ public function build(ContainerBuilder $container)
{
parent::build($container);
+ $container->addCompilerPass(new DriverCompilerPass());
$container->addCompilerPass(new LoadersCompilerPass());
$container->addCompilerPass(new FiltersCompilerPass());
$container->addCompilerPass(new PostProcessorsCompilerPass());
diff --git a/Resources/config/imagine.xml b/Resources/config/imagine.xml
index ef2b9a488..223932166 100644
--- a/Resources/config/imagine.xml
+++ b/Resources/config/imagine.xml
@@ -83,11 +83,23 @@
-
+
+
+
+
+
-
+
+
+
+
+
-
+
+
+
+
+
diff --git a/Tests/LiipImagineBundleTest.php b/Tests/LiipImagineBundleTest.php
index 169a197f8..e4a8a82a2 100644
--- a/Tests/LiipImagineBundleTest.php
+++ b/Tests/LiipImagineBundleTest.php
@@ -46,7 +46,7 @@ public function testAddLoadersCompilerPassOnBuild()
->with('liip_imagine')
->will($this->returnValue($this->createLiipImagineExtensionMock()));
$containerMock
- ->expects($this->at(0))
+ ->expects($this->at(1))
->method('addCompilerPass')
->with($this->isInstanceOf(LoadersCompilerPass::class));
@@ -63,7 +63,7 @@ public function testAddFiltersCompilerPassOnBuild()
->with('liip_imagine')
->will($this->returnValue($this->createLiipImagineExtensionMock()));
$containerMock
- ->expects($this->at(1))
+ ->expects($this->at(2))
->method('addCompilerPass')
->with($this->isInstanceOf(FiltersCompilerPass::class));
@@ -80,7 +80,7 @@ public function testAddPostProcessorsCompilerPassOnBuild()
->with('liip_imagine')
->will($this->returnValue($this->createLiipImagineExtensionMock()));
$containerMock
- ->expects($this->at(2))
+ ->expects($this->at(3))
->method('addCompilerPass')
->with($this->isInstanceOf(PostProcessorsCompilerPass::class));
@@ -97,7 +97,7 @@ public function testAddResolversCompilerPassOnBuild()
->with('liip_imagine')
->will($this->returnValue($this->createLiipImagineExtensionMock()));
$containerMock
- ->expects($this->at(3))
+ ->expects($this->at(4))
->method('addCompilerPass')
->with($this->isInstanceOf(ResolversCompilerPass::class));