Symfony2:传递给 Doctrine\ORM\EntityRepository::__construct() 的参数 2 必须是给定的 Doctrine\ORM\Mapping\ClassMetadata、none 的实例
Symfony2 : Argument 2 passed to Doctrine\ORM\EntityRepository::__construct() must be an instance of Doctrine\ORM\Mapping\ClassMetadata, none given
我正在尝试使用 FOSOAuthServerBundle 在我的实际 symfony2 项目中实施 OAuth2。
我一直在关注这个 Article 来实现它。
因为我不使用 FOS 用户包,所以我不得不创建一个 UserProvider。
我也在使用 A User Repository,就像他在 Article 中所做的那样。
我一直被这个错误所困:
ContextErrorException: Catchable Fatal Error: Argument 2 passed to Doctrine\ORM\EntityRepository::__construct() must be an instance of Doctrine\ORM\Mapping\ClassMetadata, none given, called in /app/cache/dev/appDevDebugProjectContainer.php on line 3527 and defined in /app/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php line 67
我已经按照 services.yml 的给定代码进行操作:
并将其转换为 Yaml,这是我的文件 (services.yml) :
imports:
- { resource: parameters.yml }
parameters:
# wca_transition.example.class: WCA\TransitionBundle\Example
collection.import.from_email: "%import_from_email%"
collection.import.to_email: "%import_to_email%"
platform.entity.user.class: WCA\ServerBundle\Entity\Profile
platform.user.provider.class: WCA\ServerBundle\Provider\ProfileProvider
services:
# wca_betosee_transition.example:
# class: %wca_transition.example.class%
# arguments: [@service_id, "plain_value", %parameter%]
collectionImportCommand:
class: WCA\ServerBundle\Command\CollectionImporterCommand
calls:
- [setContainer, ["@service_container"] ]
platform.user.manager:
class: Doctrine\ORM\EntityManager
factory-service: doctrine
factory-method: getManagerForClass
arguments: ["%platform.entity.user.class%"]
platform.user.repository:
class: WCA\ServerBundle\Model\ProfileRepository
factory-service: platform.user.manager
factory-method: getRepository
arguments: ["%platform.entity.user.class%"]
platform.user.provider:
class: "%platform.user.provider.class%"
# arguments: ["@platform.user.repository"]
platform.grant_type.api_key:
class: WCA\ServerBundle\OAuth\ApiKeyGrantExtension
arguments: ["@platform.user.repository"]
tags:
- { name: fos_oauth_server.grant_extension, uri: http://mywebsite.local/grants/api_key }
我想给定的错误来自我的配置,但我看不出有什么问题,因为我遵循了给定的内容。要么创建的服务没有得到给定的参数("none given"),要么我没有传递正确的参数。
有什么想法或提示吗?
PS : 如果您需要任何其他文件,请不要犹豫,我会更新 post。
我怀疑它是否有帮助,但尝试将 factory-service,factory-method 更改为 factory_service 和 factory_method 以匹配 Symfony 文档。
听起来这是唯一一篇很好地描述了如何实现 FOS OAuth2 捆绑包的文章,甚至比他们自己的文档还要好。
但出于某种原因,服务是在 xml 中定义的,我觉得这很奇怪和丑陋。
无论如何,正如@Cerad 提到的,如果您将 xml 服务转换为 yaml 格式,那么您必须将 - 替换为 _ 并且它将正常工作。
我正在尝试使用 FOSOAuthServerBundle 在我的实际 symfony2 项目中实施 OAuth2。
我一直在关注这个 Article 来实现它。
因为我不使用 FOS 用户包,所以我不得不创建一个 UserProvider。
我也在使用 A User Repository,就像他在 Article 中所做的那样。
我一直被这个错误所困:
ContextErrorException: Catchable Fatal Error: Argument 2 passed to Doctrine\ORM\EntityRepository::__construct() must be an instance of Doctrine\ORM\Mapping\ClassMetadata, none given, called in /app/cache/dev/appDevDebugProjectContainer.php on line 3527 and defined in /app/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php line 67
我已经按照 services.yml 的给定代码进行操作:
并将其转换为 Yaml,这是我的文件 (services.yml) :
imports:
- { resource: parameters.yml }
parameters:
# wca_transition.example.class: WCA\TransitionBundle\Example
collection.import.from_email: "%import_from_email%"
collection.import.to_email: "%import_to_email%"
platform.entity.user.class: WCA\ServerBundle\Entity\Profile
platform.user.provider.class: WCA\ServerBundle\Provider\ProfileProvider
services:
# wca_betosee_transition.example:
# class: %wca_transition.example.class%
# arguments: [@service_id, "plain_value", %parameter%]
collectionImportCommand:
class: WCA\ServerBundle\Command\CollectionImporterCommand
calls:
- [setContainer, ["@service_container"] ]
platform.user.manager:
class: Doctrine\ORM\EntityManager
factory-service: doctrine
factory-method: getManagerForClass
arguments: ["%platform.entity.user.class%"]
platform.user.repository:
class: WCA\ServerBundle\Model\ProfileRepository
factory-service: platform.user.manager
factory-method: getRepository
arguments: ["%platform.entity.user.class%"]
platform.user.provider:
class: "%platform.user.provider.class%"
# arguments: ["@platform.user.repository"]
platform.grant_type.api_key:
class: WCA\ServerBundle\OAuth\ApiKeyGrantExtension
arguments: ["@platform.user.repository"]
tags:
- { name: fos_oauth_server.grant_extension, uri: http://mywebsite.local/grants/api_key }
我想给定的错误来自我的配置,但我看不出有什么问题,因为我遵循了给定的内容。要么创建的服务没有得到给定的参数("none given"),要么我没有传递正确的参数。
有什么想法或提示吗?
PS : 如果您需要任何其他文件,请不要犹豫,我会更新 post。
我怀疑它是否有帮助,但尝试将 factory-service,factory-method 更改为 factory_service 和 factory_method 以匹配 Symfony 文档。
听起来这是唯一一篇很好地描述了如何实现 FOS OAuth2 捆绑包的文章,甚至比他们自己的文档还要好。 但出于某种原因,服务是在 xml 中定义的,我觉得这很奇怪和丑陋。
无论如何,正如@Cerad 提到的,如果您将 xml 服务转换为 yaml 格式,那么您必须将 - 替换为 _ 并且它将正常工作。