Skip to content

Commit 6b0f4eb

Browse files
committed
Add tag listener config (fix #24)
Improve doc Remove unused fixture
1 parent 309fd12 commit 6b0f4eb

File tree

7 files changed

+72
-22
lines changed

7 files changed

+72
-22
lines changed

DependencyInjection/Compiler/LoggerPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use Symfony\Component\DependencyInjection\ContainerBuilder;
77

88
/**
9-
* E
9+
* Attach Symfony2 logger to cache manager
1010
*/
1111
class LoggerPass implements CompilerPassInterface
1212
{
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace FOS\HttpCacheBundle\DependencyInjection\Compiler;
4+
5+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6+
use Symfony\Component\DependencyInjection\ContainerBuilder;
7+
8+
/**
9+
* Check for required ControllerListener if TagListener is enabled
10+
*/
11+
class TagListenerPass implements CompilerPassInterface
12+
{
13+
/**
14+
* {@inheritdoc}
15+
*/
16+
public function process(ContainerBuilder $container)
17+
{
18+
if ($container->has('fos_http_cache.tag_listener')
19+
&& !$container->has('sensio_framework_extra.controller.listener')
20+
) {
21+
throw new \RuntimeException(
22+
'The TagListener requires SensioFrameworkExtraBundle’s ControllerListener. '
23+
. 'Please install sensio/framework-extra-bundle and add it to your AppKernel.'
24+
);
25+
}
26+
}
27+
}

DependencyInjection/Configuration.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public function getConfigTreeBuilder()
3030

3131
$this->addRulesSection($rootNode);
3232
$this->addVarnishSection($rootNode);
33+
$this->addTagListenerSection($rootNode);
3334
$this->addFlashMessageListenerSection($rootNode);
3435
$this->addInvalidatorsSection($rootNode);
3536

@@ -116,6 +117,25 @@ private function addVarnishSection(ArrayNodeDefinition $rootNode)
116117
->end();
117118
}
118119

120+
private function addTagListenerSection(ArrayNodeDefinition $rootNode)
121+
{
122+
$rootNode
123+
->children()
124+
->arrayNode('tag_listener')
125+
->addDefaultsIfNotSet()
126+
->treatFalseLike(array('enabled' => false))
127+
->treatTrueLike(array('enabled' => true))
128+
->treatNullLike(array('enabled' => true))
129+
->children()
130+
->scalarNode('enabled')
131+
->defaultTrue()
132+
->info('Whether to enable the listener. True by default.')
133+
->end()
134+
->end()
135+
->end()
136+
->end();
137+
}
138+
119139
private function addFlashMessageListenerSection(ArrayNodeDefinition $rootNode)
120140
{
121141
$rootNode

DependencyInjection/FOSHttpCacheExtension.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ public function load(array $configs, ContainerBuilder $container)
6565
$loader->load('authorization_request_listener.xml');
6666
}
6767

68+
if ($config['tag_listener']['enabled']) {
69+
if (!class_exists('\Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
70+
throw new \RuntimeException('The TagListener requires symfony/expression-language');
71+
}
72+
73+
$loader->load('tag_listener.xml');
74+
}
75+
6876
if (!empty($config['flash_message_listener']) && $config['flash_message_listener']['enabled']) {
6977
$loader->load('flash_message_listener.xml');
7078

FOSHttpCacheBundle.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace FOS\HttpCacheBundle;
44

55
use FOS\HttpCacheBundle\DependencyInjection\Compiler\LoggerPass;
6+
use FOS\HttpCacheBundle\DependencyInjection\Compiler\TagListenerPass;
67
use Symfony\Component\DependencyInjection\ContainerBuilder;
78
use Symfony\Component\HttpKernel\Bundle\Bundle;
89

@@ -14,5 +15,6 @@ class FOSHttpCacheBundle extends Bundle
1415
public function build(ContainerBuilder $container)
1516
{
1617
$container->addCompilerPass(new LoggerPass());
18+
$container->addCompilerPass(new TagListenerPass());
1719
}
1820
}

Resources/config/tag_listener.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
<service id="fos_http_cache.tag_listener"
9+
class="FOS\HttpCacheBundle\EventListener\TagListener">
10+
<argument type="service" id="fos_http_cache.cache_manager" />
11+
<tag name="kernel.event_subscriber" event="kernel.response" />
12+
</service>
13+
</services>
14+
</container>

Tests/EventListener/Fixture/FooControllerTagAtMethod.php

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)