使用JMS \ DiExtraBundle注入服务

时间:2014-12-11 17:41:13

标签: symfony dependency-injection doctrine-orm entity listener

我在DbExtensionBundle的子目录服务中有服务PgHistService:

namespace Iba\DbExtensionBundle\Service;
class PgHistService { ...}

此服务在捆绑包的services.yml中定义,并且可以通过$ this-> get(' pghist.service')成功地包含在控制器中:

parameters:
    pghist.service.class: Iba\DbExtensionBundle\Service\PgHistService

services:            
    pghist.service:
        class: %pghist.service.class%
        arguments:
            entityManager: "@doctrine.orm.entity_manager"

现在我想在doctrine实体监听器中用JMS \ DIExtraBundle注入它:

namespace Iba\DbExtensionBundle\Entity;

use JMS\DiExtraBundle\Annotation as DI;

class BaseEntityListener {
    /** @DI\Inject("pghist.service") */
    public $pgHist;
}

变量pgHist始终为null。我做错了什么,拜托?我尝试在config.yml中设置它,但它不起作用:

jms_di_extra:
   locations:
      all_bundles: false
      bundles: [DbExtensionBundle]
      directories: ["%kernel.root_dir%/../vendor/iba/db-extension-bundle/Iba/DbExtensionBundle/Service"]

1 个答案:

答案 0 :(得分:0)

杰森罗曼是对的,谢谢你。 如果要将JMS \ DiExtraBunde与实体侦听器一起使用,则必须使用DIExtraBundle自己的系统,通过侦听器中的注释@DoctrineListener而不是实体中的Doctrine标准@EntityListeners来调用侦听器。