2016-11-29 6 views
0

私は難しい問題を抱えています。私はSymfonyと協力しており、管理エリアを管理するためにSonataをインストールしました。私はそれを行うために完了した後、私のプロンプト行は、私は、このエラーを与える:Symfony:複数のエンティティマネージャー(ソナタ)

parameters: 

services:  
    app.security.user_login_form_authenticator: 
     class: AppBundle\Security\UserLoginFormAuthenticator 
     autowire: true 

    app.security.admin_login_form_authenticator: 
     class: AppBundle\Security\AdminLoginFormAuthenticator 
     autowire: true 

は、私を助けてください:これは私のコードは

This is the error

です。

+0

プロジェクトの設定ファイルに複数のEntityMangerが定義されていますか? – Forer

+0

私はそう思います。私がSonataを設置した後、プロンプトの行は私に画像の誤りを言ったhttps://i.stack.imgur.com/ZrFCL.png –

答えて

0

自動配線機能は便利ですが、制限があります。

あなたが言うように、エンティティマネージャのインスタンスは複数存在します。したがって、Symfonyはそれらのうちのどれをあなたのサービスに注入すべきか分かりません。サービス定義を変更できる場合は、autowiring_typesパラメーターを設定して、依存関係のデフォルト実装を指定します。しかし、通常のエンティティマネージャサービスはDoctrineBundleによって定義されており、直接設定することはできません。 (私が知っているように、Doctrineの設定では設定するオプションはありません)。

エンティティマネージャを手動で指定するのが最も簡単な方法です。エンティティマネージャのサービスID(doctrine.orm.XXX_entity_manager)をあなたのサービスのコンストラクタ引数

services:  
    app.security.user_login_form_authenticator: 
     class: AppBundle\Security\UserLoginFormAuthenticator 
     arguments: [ '@doctrine.orm.XXX_entity_manager' ] 

    app.security.admin_login_form_authenticator: 
     class: AppBundle\Security\AdminLoginFormAuthenticator 
     arguments: [ '@doctrine.orm.YYY_entity_manager' ] 

サービスには他の依存関係がある場合は、明示的に指定する必要があります。

関連する問題