mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 17:10:53 +00:00
[Theming] Move prepending sylius_theme from Core to Shop extension
This commit is contained in:
parent
226116b905
commit
a9f021562c
3 changed files with 39 additions and 17 deletions
|
|
@ -100,7 +100,7 @@ final class SyliusCoreExtension extends AbstractResourceExtension implements Pre
|
|||
$config = $container->getExtensionConfig($this->getAlias());
|
||||
$config = $this->processConfiguration($this->getConfiguration([], $container), $config);
|
||||
|
||||
$this->prependSyliusThemeBundle($container, $config['driver']);
|
||||
$this->prependDefaultDriver($container, $config['driver']);
|
||||
$this->prependHwiOauth($container);
|
||||
$this->prependDoctrineMigrations($container);
|
||||
$this->prependJmsSerializerIfAdminApiBundleIsNotPresent($container);
|
||||
|
|
@ -122,6 +122,15 @@ final class SyliusCoreExtension extends AbstractResourceExtension implements Pre
|
|||
return [];
|
||||
}
|
||||
|
||||
private function prependDefaultDriver(ContainerBuilder $container, string $driver): void
|
||||
{
|
||||
foreach ($container->getExtensions() as $name => $extension) {
|
||||
if (in_array($name, self::$bundles, true)) {
|
||||
$container->prependExtensionConfig($name, ['driver' => $driver]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function prependHwiOauth(ContainerBuilder $container): void
|
||||
{
|
||||
if (!$container->hasExtension('hwi_oauth')) {
|
||||
|
|
@ -133,21 +142,6 @@ final class SyliusCoreExtension extends AbstractResourceExtension implements Pre
|
|||
$loader->load('services/integrations/hwi_oauth.xml');
|
||||
}
|
||||
|
||||
private function prependSyliusThemeBundle(ContainerBuilder $container, string $driver): void
|
||||
{
|
||||
if (!$container->hasExtension('sylius_theme')) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($container->getExtensions() as $name => $extension) {
|
||||
if (in_array($name, self::$bundles, true)) {
|
||||
$container->prependExtensionConfig($name, ['driver' => $driver]);
|
||||
}
|
||||
}
|
||||
|
||||
$container->prependExtensionConfig('sylius_theme', ['context' => 'sylius.theme.context.channel_based']);
|
||||
}
|
||||
|
||||
private function prependJmsSerializerIfAdminApiBundleIsNotPresent(ContainerBuilder $container): void
|
||||
{
|
||||
if (!$container->hasExtension('jms_serializer')) {
|
||||
|
|
|
|||
|
|
@ -20,12 +20,13 @@ use Sylius\Bundle\ShopBundle\Locale\LocaleSwitcherInterface;
|
|||
use Symfony\Component\Config\FileLocator;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
|
||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
||||
use Symfony\Component\DependencyInjection\Reference;
|
||||
use Symfony\Component\HttpFoundation\RequestMatcher\PathRequestMatcher;
|
||||
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
||||
|
||||
final class SyliusShopExtension extends Extension
|
||||
final class SyliusShopExtension extends Extension implements PrependExtensionInterface
|
||||
{
|
||||
public function load(array $configs, ContainerBuilder $container): void
|
||||
{
|
||||
|
|
@ -44,6 +45,11 @@ final class SyliusShopExtension extends Extension
|
|||
$this->configureCheckoutResolverIfNeeded($config['checkout_resolver'], $container);
|
||||
}
|
||||
|
||||
public function prepend(ContainerBuilder $container): void
|
||||
{
|
||||
$this->prependSyliusThemeBundle($container);
|
||||
}
|
||||
|
||||
private function configureCheckoutResolverIfNeeded(array $config, ContainerBuilder $container): void
|
||||
{
|
||||
if (!$config['enabled']) {
|
||||
|
|
@ -99,4 +105,13 @@ final class SyliusShopExtension extends Extension
|
|||
|
||||
return $checkoutRedirectListener;
|
||||
}
|
||||
|
||||
private function prependSyliusThemeBundle(ContainerBuilder $container): void
|
||||
{
|
||||
if (!$container->hasExtension('sylius_theme')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$container->prependExtensionConfig('sylius_theme', ['context' => 'sylius.theme.context.channel_based']);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
|
|||
use Sylius\Bundle\ShopBundle\DependencyInjection\SyliusShopExtension;
|
||||
use Sylius\Bundle\ShopBundle\Locale\StorageBasedLocaleSwitcher;
|
||||
use Sylius\Bundle\ShopBundle\Locale\UrlBasedLocaleSwitcher;
|
||||
use Sylius\Bundle\ThemeBundle\DependencyInjection\SyliusThemeExtension;
|
||||
|
||||
final class SyliusShopExtensionTest extends AbstractExtensionTestCase
|
||||
{
|
||||
|
|
@ -132,6 +133,18 @@ final class SyliusShopExtensionTest extends AbstractExtensionTestCase
|
|||
$this->assertContainerBuilderHasParameter('sylius_shop.firewall_context_name', 'myshopfirewall');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_prepends_sylius_theme_configuration_with_channel_based_context(): void
|
||||
{
|
||||
$this->container->registerExtension(new SyliusThemeExtension());
|
||||
|
||||
$this->load();
|
||||
|
||||
$syliusThemeConfig = $this->container->getExtensionConfig('sylius_theme')[0];
|
||||
|
||||
$this->assertSame('sylius.theme.context.channel_based', $syliusThemeConfig['context']);
|
||||
}
|
||||
|
||||
protected function getContainerExtensions(): array
|
||||
{
|
||||
return [
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue