我已經使用警衛和自動連接服務設置了自定義驗證器。這已經過測試,只需配置MySQL即可正常工作。Symfony 3 - 多個數據庫連接的EntityManager依賴注入
我已經指定了第二個數據庫連接(oracle),但Symfony現在不允許在我的服務配置中進行自動裝配,因爲在將EntityManager注入到自定義Authenticator類時,它不知道使用哪個數據庫連接。
任何想法如何配置依賴注入來使用特定的數據庫連接,以便我可以繼續使用AutoWire。
Unable to autowire argument of type "Doctrine\ORM\EntityManager" for the service "user.security.login_form_authenticator". Multiple services exist for this class (doctrine.orm.prism_entity_manager, doctrine.orm.baan_entity_manager).
這裏是config.yml我的教訓配置
doctrine:
dbal:
connections:
prism:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
# if using pdo_sqlite as your database driver:
# 1. add the path in parameters.yml
# e.g. database_path: "%kernel.root_dir%/../var/data/data.sqlite"
# 2. Uncomment database_path in parameters.yml.dist
# 3. Uncomment next line:
#path: "%database_path%"
baan:
driver: oci8
host: "%baan_host%"
port: "%baan_port%"
dbname: "%baan_db_name%"
user: "%baan_user%"
password: "%baan_password%"
charset: AL32UTF8
orm:
default_entity_manager: prism
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
auto_mapping: true
prism:
naming_strategy: doctrine.orm.naming_strategy.underscore
connection: prism
mappings:
UserBundle:
type: annotation
baan:
connection: baan
mappings:
BaanBundle:
type: annotation
這裏是我的驗證器類的構造函數
private $formFactory;
private $em;
private $router;
public function __construct(FormFactoryInterface $formFactory, EntityManager $em, RouterInterface $router)
{
$this->formFactory = $formFactory;
$this->em = $em;
$this->router = $router;
}
簡單。不要使用autowire。我認爲實際上可能有一個解決方法(查看文檔),但爲什麼添加更多的魔法。 – Cerad