【发布时间】:2013-12-21 16:40:33
【问题描述】:
我想在我的 Symfony2 项目中覆盖默认的 Doctrine\ORM\EntityRepository 类,以便我可以访问 @session 服务,以便我的所有存储库都可以访问某个会话变量(如果已设置)。
经过调查,它似乎没有我希望的那么简单,因为 EntityRepository 是从 Doctrine\ORM\EntityManager 中实例化的,并且这个类是使用静态“create”方法自行实例化的。
我遵循Injecting dependency into entity repository 中的答案,但在实际实现自定义管理器类时遇到了障碍(特别是答案的作者说“但是由于您正在制作自定义实体管理器,您可以将其连接到服务容器并注入您需要的任何依赖项”)。
我已经定义了我的重写 EntityManager 类,具有重写的“create”函数,还重写了“getRepository”函数。正是在这个函数中,我相信我需要将会话添加到存储库中,因为它是在我重写的 EntityRepository 类上使用“setSession”方法创建的,但我不确定如何将会话实际放入管理器中首先,因为 EntityManager 类 (Connection $conn, Configuration $config, EventManager $eventManager) 的其他构造函数参数在 Symfony\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension "ormLoad" 方法中提供。
我也指定了
doctrine.orm.entity_manager.class: Me\MyBundle\Doctrine\ORM\EntityManager
在我的 config.yml 文件中。
如何让 Symfony 在创建存储库时使用我的自定义 EntityManager 类,并将会话也注入其中?
【问题讨论】: