From 8e0ce04a0b07a093dc3f70a8aa5fd229456c3be3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Glawaty?= Date: Tue, 1 Oct 2019 00:31:55 +0200 Subject: [PATCH] Added compiler extension for `Nette` --- src/Bridge/Nette/SluggableExtension.php | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/Bridge/Nette/SluggableExtension.php diff --git a/src/Bridge/Nette/SluggableExtension.php b/src/Bridge/Nette/SluggableExtension.php new file mode 100644 index 0000000..395342a --- /dev/null +++ b/src/Bridge/Nette/SluggableExtension.php @@ -0,0 +1,58 @@ +registerSubscriberIntoEntityManager = $registerSubscriberIntoEntityManager; + } + + /** + * {@inheritdoc} + */ + public function loadConfiguration(): void + { + $builder = $this->getContainerBuilder(); + + $builder->addDefinition($this->prefix('storage')) + ->setType(SixtyEightPublishers\DoctrineSluggable\SluggableDefinitionStorage::class); + + $builder->addDefinition($this->prefix('event_subscriber')) + ->setType(SixtyEightPublishers\DoctrineSluggable\SluggableEventSubscriber::class); + + $builder->addDefinition($this->prefix('helper')) + ->setType(SixtyEightPublishers\DoctrineSluggable\Helper\UniqueSlugHelper::class); + } + + /** + * {@inheritdoc} + */ + public function beforeCompile(): void + { + if (FALSE === $this->registerSubscriberIntoEntityManager) { + return; + } + + $builder = $this->getContainerBuilder(); + + $builder->getDefinition($builder->getByType(Doctrine\ORM\EntityManagerInterface::class)) + ->addSetup('?->getEventManager()->addEventSubscriber(?)', [ + '@self', + $builder->getDefinition($this->prefix('event_subscriber')), + ]); + } +}