gpt4 book ai didi

symfony - 无法将 EntityManager 注入(inject) Twig 扩展

转载 作者:行者123 更新时间:2023-12-01 22:26:36 24 4
gpt4 key购买 nike

我在将 EntityManger 注入(inject) Symfony2 twig-extension 时遇到问题。我做了以下事情:

我注册了一个新的 Twig 扩展并创建了一个类。所有这一切都在发挥作用。现在我想访问数据库并尝试注入(inject)EntityManager 学说。我的第一步是将 EM 作为参数添加到构造函数中:

use XYZ\BlubBundle\Utils\SessionHelper;

class SessionHelperExtension extends \Twig_Extension
{
private $em;
private $conn;
protected $sessionHelper;

public function __construct(\Doctrine\ORM\EntityManager $em, \XYZ\BlubBundle\Utils\SessionHelper $sessionHelper) {
$this->em = $em;
$this->conn = $em->getConnection();
$this->sessionHelper = $sessionHelper;
}

[...]
}

?>

然后我将以下行添加到 service.yaml 中:

twig.extension.sessionHelper:
class: XYZ\BlubBundle\Extensions\SessionHelperExtension
arguments: [@session_helper, @doctrine.orm.entity_manager]
tags:
- { name: twig.extension }

我自己的服务“sessionHelper”被注入(inject)没有问题,但EntityManager始终为“null”。我在这里做错了什么?

编辑:我收到以下异常:

Catchable Fatal Error: Argument 2 passed to
XYZ\BlubBundle\Extensions\SessionHelperExtension::__construct() must be an instance of
Doctrine\ORM\EntityManager, 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(
\Doctrine\ORM\EntityManager $em,
\XYZ\BlubBundle\Utils\SessionHelper $sessionHelper
) {

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

public function __construct(
\XYZ\BlubBundle\Utils\SessionHelper $sessionHelper,
\Doctrine\ORM\EntityManager $em
) {

更新

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

关于symfony - 无法将 EntityManager 注入(inject) Twig 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12782860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com