Skip to content

Commit 87140aa

Browse files
committed
make initializer optional
Add a config option to make the initializer optional. Currently this option is only relevant if sonata admin is used (BC).
1 parent feee66a commit 87140aa

File tree

11 files changed

+99
-8
lines changed

11 files changed

+99
-8
lines changed

DependencyInjection/CmfRoutingExtension.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,10 @@ public function loadSonataPhpcrAdmin($config, XmlFileLoader $loader, ContainerBu
287287
$container->setParameter($this->getAlias() . '.dynamic.persistence.phpcr.admin_basepath', $basePath);
288288

289289
$loader->load('admin-phpcr.xml');
290+
291+
if ($config['enable_initializer']) {
292+
$loader->load('initializer-phpcr.xml');
293+
}
290294
}
291295

292296
public function loadOrmProvider($config, XmlFileLoader $loader, ContainerBuilder $container, $matchImplicitLocale)

DependencyInjection/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ public function getConfigTreeBuilder()
108108
->values(array(true, false, 'auto'))
109109
->defaultValue('auto')
110110
->end()
111+
->booleanNode('enable_initializer')->defaultTrue()->end()
111112
->end()
112113
->end()
113114
->arrayNode('orm')

Resources/config/admin-phpcr.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,5 @@
5555
<tag name="sonata.admin.extension"/>
5656
</service>
5757

58-
<service id="cmf_routing.initializer" class="Doctrine\Bundle\PHPCRBundle\Initializer\GenericInitializer">
59-
<argument>CmfRoutingBundle</argument>
60-
<argument type="collection">
61-
<argument>%cmf_routing.dynamic.persistence.phpcr.admin_basepath%</argument>
62-
</argument>
63-
<tag name="doctrine_phpcr.initializer"/>
64-
</service>
65-
6658
</services>
6759
</container>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
9+
<service id="cmf_routing.initializer" class="Doctrine\Bundle\PHPCRBundle\Initializer\GenericInitializer">
10+
<argument>CmfRoutingBundle</argument>
11+
<argument type="collection">
12+
<argument>%cmf_routing.dynamic.persistence.phpcr.admin_basepath%</argument>
13+
</argument>
14+
<tag name="doctrine_phpcr.initializer"/>
15+
</service>
16+
17+
</services>
18+
</container>

Resources/config/schema/routing-1.0.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
<xsd:attribute name="route-basepath" type="xsd:string" />
8686
<xsd:attribute name="content-basepath" type="xsd:string" />
8787
<xsd:attribute name="use-sonata-admin" type="enable_auto" />
88+
<xsd:attribute name="enable-initializer" type="xsd:boolean" />
8889
</xsd:complexType>
8990

9091
<xsd:complexType name="route_basepath">

Tests/Resources/Fixtures/config/config.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
),
2828
'content_basepath' => '/cms/content',
2929
'use_sonata_admin' => 'false',
30+
'enable_initializer' => true,
3031
),
3132
),
3233
'locales' => array('en', 'fr'),

Tests/Resources/Fixtures/config/config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
route-basepath="/cms/routes"
2727
content-basepath="/cms/content"
2828
use-sonata-admin="false"
29+
enable-initializer="true"
2930
>
3031
<route-basepath>/simple</route-basepath>
3132
</phpcr>

Tests/Resources/Fixtures/config/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ cmf_routing:
1919
- /simple
2020
content_basepath: /cms/content
2121
use_sonata_admin: false
22+
enable_initializer: true
2223
locales: [en, fr]
2324
auto_locale_pattern: true
2425
match_implicit_locale: true

Tests/Resources/Fixtures/config/config3.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
route-basepath="/cms/routes"
77
content-basepath="/cms/content"
88
use-sonata-admin="auto"
9+
enable-initializer="true"
910
/>
1011
</persistence>
1112
</dynamic>

Tests/Unit/DependencyInjection/CmfRoutingExtensionTest.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,4 +165,74 @@ public function testLoadBasePaths()
165165
$this->assertContainerBuilderHasParameter('cmf_routing.dynamic.persistence.phpcr.admin_basepath', '/cms/routes');
166166
$this->assertContainerBuilderHasParameter('cmf_routing.dynamic.persistence.phpcr.route_basepaths', array('/cms/routes', '/cms/test'));
167167
}
168+
169+
public function testInitializerEnabled()
170+
{
171+
$this->container->setParameter(
172+
'kernel.bundles',
173+
array(
174+
'CmfRoutingBundle' => true,
175+
'SonataDoctrinePHPCRAdminBundle' => true,
176+
)
177+
);
178+
179+
$this->load(array(
180+
'dynamic' => array(
181+
'enabled' => true,
182+
'persistence' => array(
183+
'phpcr' => array(
184+
'enabled' => true,
185+
'use_sonata_admin' => true,
186+
'enable_initializer' => true,
187+
),
188+
),
189+
),
190+
));
191+
192+
$this->assertContainerBuilderHasService('cmf_routing.initializer', 'Doctrine\Bundle\PHPCRBundle\Initializer\GenericInitializer');
193+
}
194+
195+
public function testInitializerDisabled()
196+
{
197+
$this->container->setParameter(
198+
'kernel.bundles',
199+
array(
200+
'CmfRoutingBundle' => true,
201+
'SonataDoctrinePHPCRAdminBundle' => true,
202+
)
203+
);
204+
205+
$this->load(array(
206+
'dynamic' => array(
207+
'enabled' => true,
208+
'persistence' => array(
209+
'phpcr' => array(
210+
'enabled' => true,
211+
'use_sonata_admin' => true,
212+
'enable_initializer' => false,
213+
),
214+
),
215+
),
216+
));
217+
218+
$this->assertFalse($this->container->has('cmf_routing.initializer'));
219+
}
220+
221+
public function testInitializerDisabledWithoutSonata()
222+
{
223+
$this->load(array(
224+
'dynamic' => array(
225+
'enabled' => true,
226+
'persistence' => array(
227+
'phpcr' => array(
228+
'enabled' => true,
229+
'use_sonata_admin' => false,
230+
),
231+
),
232+
),
233+
));
234+
235+
$this->assertFalse($this->container->has('cmf_routing.initializer'));
236+
}
237+
168238
}

0 commit comments

Comments
 (0)