Symfony:多实体管理器(奏鸣曲)
Symfony: multiple entity manager (sonata)
我有一个难题需要回答。我正在使用 Symfony 并安装了 Sonata 来管理管理区域。完成后,我的提示行给我这个错误:
This is the error
这是我的代码:
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
请帮帮我
自动装配功能很方便,但也有局限性。
如您所说,您有多个实体管理器实例。所以,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' ]
显然,如果服务有其他依赖,你也需要指定它们。
我有一个难题需要回答。我正在使用 Symfony 并安装了 Sonata 来管理管理区域。完成后,我的提示行给我这个错误:
This is the error
这是我的代码:
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
请帮帮我
自动装配功能很方便,但也有局限性。
如您所说,您有多个实体管理器实例。所以,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' ]
显然,如果服务有其他依赖,你也需要指定它们。