Skip to content

Commit

Permalink
[DoctrineMongoDBBundle] added ability to register global listeners an…
Browse files Browse the repository at this point in the history
…d subscribers via the DIC
  • Loading branch information
kriswallsmith authored and fabpot committed Nov 15, 2010
1 parent da18873 commit b932441
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
Expand Up @@ -136,10 +136,16 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder
$eventManagerId = sprintf('doctrine.odm.mongodb.%s_event_manager', $eventManagerName);
if (!$container->hasDefinition($eventManagerId)) {
$eventManagerDef = new Definition('%doctrine.odm.mongodb.event_manager_class%');
$eventManagerDef->addMethodCall('loadTaggedEventListeners', array(
new Reference('service_container'),
));
$eventManagerDef->addMethodCall('loadTaggedEventListeners', array(
new Reference('service_container'),
sprintf('doctrine.odm.mongodb.%s_event_listener', $eventManagerName),
));
$eventManagerDef->addMethodCall('loadTaggedEventSubscribers', array(
new Reference('service_container'),
));
$eventManagerDef->addMethodCall('loadTaggedEventSubscribers', array(
new Reference('service_container'),
sprintf('doctrine.odm.mongodb.%s_event_subscriber', $eventManagerName),
Expand Down
14 changes: 10 additions & 4 deletions src/Symfony/Bundle/DoctrineMongoDBBundle/Event/EventManager.php
Expand Up @@ -10,10 +10,15 @@ class EventManager extends BaseEventManager
/**
* Loads event listeners from the service container.
*
* <service class="MyListener">
* <tag name="doctrine.odm.mongodb.event_listener" event="prePersist" />
* <tag name="doctrine.odm.mongodb.event_listener" event="preUpdate" />
* </service>
*
* @param TaggedContainerInterface $container The service container
* @param string $tagName The name of the tag to load
*/
public function loadTaggedEventListeners(TaggedContainerInterface $container, $tagName)
public function loadTaggedEventListeners(TaggedContainerInterface $container, $tagName = 'doctrine.odm.mongodb.event_listener')
{
foreach ($container->findTaggedServiceIds($tagName) as $id => $instances) {
$events = array();
Expand All @@ -32,13 +37,14 @@ public function loadTaggedEventListeners(TaggedContainerInterface $container, $t
/**
* Loads event subscribers from the service container.
*
* A service can be marked as an event subscriber using the
* "doctrine.odm.mongodb.event_subscriber" tag:
* <service class="MySubscriber">
* <tag name="doctrine.odm.mongodb.event_subscriber" />
* </service>
*
* @param TaggedContainerInterface $container The service container
* @param string $tagName The name of the tag to load
*/
public function loadTaggedEventSubscribers(TaggedContainerInterface $container, $tagName)
public function loadTaggedEventSubscribers(TaggedContainerInterface $container, $tagName = 'doctrine.odm.mongodb.event_subscriber')
{
foreach ($container->findTaggedServiceIds($tagName) as $id => $instances) {
$this->addEventSubscriber($container->get($id));
Expand Down

0 comments on commit b932441

Please sign in to comment.