添加第三方事件订阅者

Adding a third party event subscriber

我对 symfony 比较陌生,正在处理一个使用 PostgreSQL 和 postgis 的项目。因此我想制定支持 postgis 的学说并偶然发现了这个扩展: https://github.com/jsor/doctrine-postgis

在设置部分只有两行代码和 link 引用给定的 symfony 文档。

所以我尝试在我的 services.yml 文件中添加 ORMSchemaEventSubscriber:

parameters:
#    parameter_name: value

services:
    my.subscriber:
        class: Jsor\Doctrine\PostGIS\Event\ORMSchemaEventSubscriber
        arguments: []
        tags:
            - { name: kernel.event_subscriber }

此方法抛出异常,指出 ORMSchemaEventSubscriber class 不是 Symfony\Component\EventDispatcher\EventSubscriberInterface 的子class。

这就是我卡住的地方,不知道该做什么或把给定的代码行放在哪里。

您正试图将其注册为 Symfony 内核监听器,但事实并非如此。

因此,要使其正常工作,您必须使用适当的标签:

my.subscriber:
    class: Jsor\Doctrine\PostGIS\Event\ORMSchemaEventSubscriber
    tags:
        - { name: doctrine.event_subscriber, connection: default }

这是关于此的 Symfony 文档: http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html

在您的服务定义中,请将 name: kernel.event_subscriber 更改为 name: doctrine.event_subscriber,以便它变为:

services:
    my.subscriber:
        class: Jsor\Doctrine\PostGIS\Event\ORMSchemaEventSubscriber
        arguments: []
        tags:
            - { name: doctrine.event_subscriber }

更多信息:https://github.com/jsor/doctrine-postgis/issues/3