Merge pull request #423 from stloyd/feature/di_prepend

Expose `driver` option into bundles when CoreBundle is used
This commit is contained in:
Paweł Jędrzejewski 2013-10-17 02:11:39 -07:00
commit 1a0ff1eab6
2 changed files with 34 additions and 14 deletions

View file

@ -7,7 +7,6 @@ sylius_installer:
model: Sylius\Bundle\CoreBundle\Model\User
sylius_money:
driver: doctrine/orm
currency: %sylius.currency%
locale: %sylius.locale%
@ -17,11 +16,9 @@ sylius_cart:
item:
form: Sylius\Bundle\CoreBundle\Form\Type\CartItemType
sylius_settings:
driver: doctrine/orm
sylius_settings: ~
sylius_taxonomies:
driver: doctrine/orm
classes:
taxonomy:
model: Sylius\Bundle\CoreBundle\Model\Taxonomy
@ -31,7 +28,6 @@ sylius_taxonomies:
form: Sylius\Bundle\CoreBundle\Form\Type\TaxonType
sylius_product:
driver: doctrine/orm
classes:
product:
model: Sylius\Bundle\CoreBundle\Model\Product
@ -46,14 +42,12 @@ sylius_variable_product:
form: Sylius\Bundle\CoreBundle\Form\Type\VariantType
sylius_taxation:
driver: doctrine/orm
classes:
tax_rate:
model: Sylius\Bundle\CoreBundle\Model\TaxRate
form: Sylius\Bundle\CoreBundle\Form\Type\TaxRateType
sylius_shipping:
driver: doctrine/orm
classes:
shipment:
model: Sylius\Bundle\CoreBundle\Model\Shipment
@ -63,11 +57,9 @@ sylius_shipping:
model: Sylius\Bundle\CoreBundle\Model\ShippingMethod
form: Sylius\Bundle\CoreBundle\Form\Type\ShippingMethodType
sylius_promotions:
driver: doctrine/orm
sylius_promotions: ~
sylius_inventory:
driver: doctrine/orm
backorders: true
classes:
unit:
@ -76,19 +68,16 @@ sylius_inventory:
model: %sylius.model.variant.class%
sylius_payments:
driver: doctrine/orm
gateways:
dummy: Test
stripe: Stripe
sylius_addressing:
driver: doctrine/orm
classes:
address:
controller: Sylius\Bundle\WebBundle\Controller\Frontend\Account\AddressController
sylius_sales:
driver: doctrine/orm
classes:
order:
model: Sylius\Bundle\CoreBundle\Model\Order

View file

@ -13,6 +13,7 @@ namespace Sylius\Bundle\CoreBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\Config\Definition\Processor;
@ -23,7 +24,7 @@ use Sylius\Bundle\CoreBundle\SyliusCoreBundle;
*
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
*/
class SyliusCoreExtension extends Extension
class SyliusCoreExtension extends Extension implements PrependExtensionInterface
{
/**
* {@inheritdoc}
@ -60,6 +61,36 @@ class SyliusCoreExtension extends Extension
$container->setParameter('sylius.config.classes', $classes);
}
/**
* {@inheritdoc}
*/
public function prepend(ContainerBuilder $container)
{
$configs = $container->getExtensionConfig($this->getAlias());
$config = $this->processConfiguration(new Configuration(), $configs);
if (isset($config['driver'])) {
$config = array('driver' => $config['driver']);
foreach ($container->getExtensions() as $name => $extension) {
switch ($name) {
case 'sylius_addressing':
case 'sylius_inventory':
case 'sylius_money':
case 'sylius_payments':
case 'sylius_product':
case 'sylius_promotions':
case 'sylius_sales':
case 'sylius_settings':
case 'sylius_shipping':
case 'sylius_taxation':
case 'sylius_taxonomies':
$container->prependExtensionConfig($name, $config);
break;
}
}
}
}
/**
* Remap class parameters.
*