3

EntityMangerをSymfony2の小枝拡張に注入するのに問題があります。私は次のことをしました:

新しい小枝拡張を登録し、クラスを作成しました。すべてが機能しています。今、私はデータベースにアクセスしたいと思い、教義の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」は問題なく注入されますが、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
4

1 に答える 1

2
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/

于 2012-10-08T13:37:17.993 に答える