无法将实体管理器注入 Twig 扩展



我在将 EntityManger 注入 Symfony2 twig-extension 时遇到问题。我做了以下工作:

我注册了一个新的树枝扩展并创建了一个类。所有这些都在起作用。现在我想访问数据库,并尝试注入原则EntityManager。我的第一步是将 EM 作为参数添加到构造函数中:

use XYZBlubBundleUtilsSessionHelper;
class SessionHelperExtension extends Twig_Extension
{
    private $em;
    private $conn;
    protected $sessionHelper;
    public function __construct(DoctrineORMEntityManager $em, XYZBlubBundleUtilsSessionHelper $sessionHelper) {
        $this->em = $em;
        $this->conn = $em->getConnection();
        $this->sessionHelper = $sessionHelper;
    }
    [...]
}
?>

然后我向service.yaml添加了以下行:

twig.extension.sessionHelper:
    class: XYZBlubBundleExtensionsSessionHelperExtension
    arguments: [@session_helper, @doctrine.orm.entity_manager]
    tags:
        - { name: twig.extension }

我自己的服务"会话助手"被注入没有问题,但实体管理器始终是"空"。我在这里做错了什么?

编辑:我得到以下异常:

Catchable Fatal Error: Argument 2 passed to
XYZBlubBundleExtensionsSessionHelperExtension::__construct() must be an instance of
DoctrineORMEntityManager, none given, 
called in /.../Symfony/app/cache/dev/appDevDebugProjectContainer.php on line 2918 and 
defined in /.../Symfony/src/XYZ/BlubBundle/Extensions/SessionHelperExtension.php line 12
public function __construct(
    DoctrineORMEntityManager $em, 
    XYZBlubBundleUtilsSessionHelper $sessionHelper
) {

是错误的 — 您需要保持与yml相同的顺序:

public function __construct(
    XYZBlubBundleUtilsSessionHelper $sessionHelper, 
    DoctrineORMEntityManager $em
) {

更新

试试这个: http://www.coderelic.com/2012/06/querying-the-database-from-a-twig-extension-in-symfony-2/

最新更新