Symfony2: el argumento 2 pasado a Doctrine / ORM / EntityRepository::__ construct() debe ser una instancia de Doctrine / ORM / Mapping / ClassMetadata, ninguno dado
oauth-2.0 (2)
Dudo que sea útil, pero intente cambiar el servicio de fábrica, el método de fábrica al servicio_de fábrica y el método de fábrica para que coincidan con la documentación de Symfony.
Estoy intentando implementar OAuth2 en mi proyecto real symfony2 usando FOSOAuthServerBundle.
He estado siguiendo este artículo para implementarlo.
Como no utilizo el paquete de usuario de FOS, tuve que crear un UserProvider.
También estoy usando un repositorio de usuarios como lo hizo en su artículo .
Me he quedado atrapado con este error:
ContextErrorException: Catchable Fatal Error: argumento 2 pasado a Doctrine / ORM / EntityRepository :: __ construct () debe ser una instancia de Doctrine / ORM / Mapping / ClassMetadata, none given, llamado en /app/cache/dev/appDevDebugProjectContainer.php en línea 3527 y definido en /app/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php línea 67
He seguido el código dado para services.yml:
Y lo convertí en Yaml, aquí mi archivo (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 }
Supongo que el error dado proviene de mi configuración, pero no veo lo que podría estar mal, ya que seguí lo que se dio. O los servicios creados no obtienen los argumentos dados ("ninguno dado") o no paso los correctos.
Alguna idea o sugerencia?
PD: si necesita otros archivos, no dude en preguntar, actualizaré la publicación.
Parece que es el único artículo que describe muy bien cómo implementar el paquete FOS OAuth2, incluso mejor que su propia documentación. Pero, por alguna razón, los servicios se definen en xml, lo que me parece muy raro y feo.
De todos modos, como @Cerad mencionó, si traduces el servicio xml al formato yaml, entonces tendrás que reemplazar el - por _ y funcionará bien.