Symfony2:传递给Doctrine \ ORM \ EntityRepository :: __ construct()的参数2必须是Doctrine \ ORM \ Mapping \ ClassMetadata的实例,没有给出

时间:2015-01-26 17:01:21

标签: symfony orm oauth-2.0 doctrine

我尝试使用FOSOAuthServerBundle在我的实际symfony2项目中实现OAuth2。

我一直在关注Article来实施它。

由于我不使用FOS用户软件包,因此我必须创建一个UserProvider。

我也在他的Article中使用用户存储库。

我一直坚持这个错误:

  

ContextErrorException:Catchable Fatal Error:传递给Doctrine \ ORM \ EntityRepository :: __ construct()的参数2必须是Doctrine \ ORM \ Mapping \ ClassMetadata的实例,没有给出,在/ app / cache / dev / appDevDebugProjectContainer中调用。 php在第3527行并在/app/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php第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 }

我认为给定的错误来自我的配置,但我不知道自从我按照给出的内容可能出错。要么创建的服务没有得到给定的参数("没有给出")或者我没有通过正确的参数。

任何想法或提示?

PS:如果您需要任何其他文件,请不要犹豫,我会更新帖子。

2 个答案:

答案 0 :(得分:4)

我怀疑它是否有帮助但是尝试将factory-service,factory-method更改为factory_service和factory_method以匹配Symfony文档。

答案 1 :(得分:1)

听起来它是唯一一篇很好地描述如何实现FOS OAuth2捆绑包的文章,甚至比他们自己的文档更好。 但由于某种原因,服务是用xml定义的,我发现它非常奇怪和丑陋。

无论如何,正如@Cerad所提到的,如果你将xml服务翻译成yaml格式,那么你将不得不替换 - by _并且它将正常工作。