0
使用Symfony的2.8事件調度器和容器組件不內Symfony的應用的Symfony此事件服務標籤內部沒有Symfony的應用
從我的引導/內核文件:
$this->container = new ContainerBuilder(new ParameterBag());
$this->getContainer()->addCompilerPass(new RegisterListenersPass());
$this->getContainer()->register('event_dispatcher', EventDispatcher::class);
$this->loadServiceConfig(); // See below for reference
/** @var EventDispatcher $ed */
$ed = $this->getContainer()->get('event_dispatcher');
// The next line works
$ed->addSubscriber(new SampleSubscriber());
...
private function loadServiceConfig()
{
$loader = new YamlFileLoader($this->container, new FileLocator(__DIR__);
$loader->load('config/services.yml');
}
從config/services.yml
:
services:
sample_subscriber:
class: Sample\Event\SampleSubscriber
public: true
tags:
- { name: kernel.event_subscriber }
手動訂閱的作品,但我希望事件自動附加g伊芬從YAML文件中的標籤
你至少需要爲了揭開序幕RegisterListenerPass「編譯」的容器()。從來沒有嘗試過在框架之外使用編譯器,所以不能提供任何細節。 – Cerad
添加了compile()調用,但仍然沒有骰子。我會進一步調查。 –
創建了一個獨立的示例,與我的驗證確實無誤。 (如果您想要參考某些內容):https://github.com/simshaun/so-45003754 – simshaun