[DoctrineMongoDBBundle] added ability to register global listeners and subscribers via the DIC
This commit is contained in:
parent
da188734d8
commit
b932441ac9
@ -136,10 +136,16 @@ class DoctrineMongoDBExtension extends Extension
|
|||||||
$eventManagerId = sprintf('doctrine.odm.mongodb.%s_event_manager', $eventManagerName);
|
$eventManagerId = sprintf('doctrine.odm.mongodb.%s_event_manager', $eventManagerName);
|
||||||
if (!$container->hasDefinition($eventManagerId)) {
|
if (!$container->hasDefinition($eventManagerId)) {
|
||||||
$eventManagerDef = new Definition('%doctrine.odm.mongodb.event_manager_class%');
|
$eventManagerDef = new Definition('%doctrine.odm.mongodb.event_manager_class%');
|
||||||
|
$eventManagerDef->addMethodCall('loadTaggedEventListeners', array(
|
||||||
|
new Reference('service_container'),
|
||||||
|
));
|
||||||
$eventManagerDef->addMethodCall('loadTaggedEventListeners', array(
|
$eventManagerDef->addMethodCall('loadTaggedEventListeners', array(
|
||||||
new Reference('service_container'),
|
new Reference('service_container'),
|
||||||
sprintf('doctrine.odm.mongodb.%s_event_listener', $eventManagerName),
|
sprintf('doctrine.odm.mongodb.%s_event_listener', $eventManagerName),
|
||||||
));
|
));
|
||||||
|
$eventManagerDef->addMethodCall('loadTaggedEventSubscribers', array(
|
||||||
|
new Reference('service_container'),
|
||||||
|
));
|
||||||
$eventManagerDef->addMethodCall('loadTaggedEventSubscribers', array(
|
$eventManagerDef->addMethodCall('loadTaggedEventSubscribers', array(
|
||||||
new Reference('service_container'),
|
new Reference('service_container'),
|
||||||
sprintf('doctrine.odm.mongodb.%s_event_subscriber', $eventManagerName),
|
sprintf('doctrine.odm.mongodb.%s_event_subscriber', $eventManagerName),
|
||||||
|
@ -10,10 +10,15 @@ class EventManager extends BaseEventManager
|
|||||||
/**
|
/**
|
||||||
* Loads event listeners from the service container.
|
* 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 TaggedContainerInterface $container The service container
|
||||||
* @param string $tagName The name of the tag to load
|
* @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) {
|
foreach ($container->findTaggedServiceIds($tagName) as $id => $instances) {
|
||||||
$events = array();
|
$events = array();
|
||||||
@ -32,13 +37,14 @@ class EventManager extends BaseEventManager
|
|||||||
/**
|
/**
|
||||||
* Loads event subscribers from the service container.
|
* Loads event subscribers from the service container.
|
||||||
*
|
*
|
||||||
* A service can be marked as an event subscriber using the
|
* <service class="MySubscriber">
|
||||||
* "doctrine.odm.mongodb.event_subscriber" tag:
|
* <tag name="doctrine.odm.mongodb.event_subscriber" />
|
||||||
|
* </service>
|
||||||
*
|
*
|
||||||
* @param TaggedContainerInterface $container The service container
|
* @param TaggedContainerInterface $container The service container
|
||||||
* @param string $tagName The name of the tag to load
|
* @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) {
|
foreach ($container->findTaggedServiceIds($tagName) as $id => $instances) {
|
||||||
$this->addEventSubscriber($container->get($id));
|
$this->addEventSubscriber($container->get($id));
|
||||||
|
Reference in New Issue
Block a user