Symfony2 : Argument 2 passed to Doctrine\\ORM\\Ent

2019-07-22 10:12发布

问题:

I'm trying to implement OAuth2 in my actual symfony2 project using the FOSOAuthServerBundle.

I've been following this Article to implement it.

Since i don't use FOS User bundle i had to create a UserProvider.

I'm also using A User Repository as he did in his Article.

I've been stuck with this error :

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

I've followed the given code for services.yml:

And converted it to Yaml, here my file (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 }

I suppose the given error is coming from my configuration but i don't see what could be wrong since i followed what was given. Either the services created don't get the given arguments ("none given") or i don't pass the correct ones.

Any ideas or hints?

PS : If you need any other files, don't hesitate to ask, i'll update the post.

回答1:

I doubt if it will help but try changing factory-service,factory-method to factory_service and factory_method to match the Symfony documentation.



回答2:

Sounds like it is the only article that describes very well how to implement FOS OAuth2 bundle, even better than their own documentation. But for some reason, services are defined in xml which I find very weird and ugly.

Anyway, as @Cerad mentioned, if you translate the xml service to the yaml format, then you'll have to replace the - by _ and it will work fine.