自定义实体侦听器解析程序

时间:2014-08-07 15:15:32

标签: symfony events doctrine-orm listener

我正在尝试设置不同的实体侦听器解析器,因为我想在几个生命周期回调中使用几个服务。我搜索了一些答案,说它应该在配置中设置类似于这个:

doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        auto_mapping: true
        entity_listener_resolver: {HERE!}

然而,当我这样做时,我收到以下错误:

Unrecognized options "entity_listener_resolver" under "doctrine.orm.entity_    
  managers.default"

此外,当我查看配置参考时,我没有在任何地方看到这样的选项或设置它的选项:http://symfony.com/doc/current/reference/configuration/doctrine.html

那么如何更改实体侦听器解析器?

我正在使用最新的Sf 2.5版本。

2 个答案:

答案 0 :(得分:1)

当使用“doctrine / doctrine-bundle”时,我遇到了同样的问题:“~1.2”。

您有两种选择。

1)使用doctrine / doctrine-bundle 1.3 Beta,其中存在关键的entity_listener_resolver。

2)或者使用以下要点使其无需使用密钥即可运行:https://gist.github.com/vadim2404/9538227

更多信息:http://egeloen.fr/2013/12/01/symfony2-doctrine2-entity-listener-as-serice/

来自irc频道的那个人。

答案 1 :(得分:0)

您只能在services.yml中将其用于特定的捆绑包:

    orm:
        entity_listener_resolver: {your_entity_listener_resolver}

但是在config.yml文件中,您需要为特定的实体管理器设置实体侦听器解析器,例如默认的实体管理器:

    orm:
    entity_managers:
        default:
            entity_listener_resolver: {your_entity_listener_resolver}